Пример #1
0
        public static Network CreateNetworkMaxout(GPUModule module, int minibatchSize)
        {
            var net = new Network(module, minibatchSize: minibatchSize);

            net.AddInputLayer(Constants.TOTAL_VALUE_COUNT, sparseDataSize: minibatchSize * RawRecord.FEATURE_COUNT * 2);
            net.AddLabelLayer(1);

            var fc1 = net.AddFullyConnectedLayer(128, "FC1");

            fc1.Weights.InitValuesUniformCPU(0.1f);

            fc1.L2Regularization    = 0.00001f;
            fc1.RegularizationRatio = 10;
            net.AddMaxoutLayer("MAXOUT1", groupsize: 4);

            var fc2 = net.AddFullyConnectedLayer(256, "FC2");

            fc2.Weights.InitValuesUniformCPU(0.1f);
            net.AddMaxoutLayer("MAXOUT2", groupsize: 2);
            net.AddDropoutLayer();

            var sm = net.AddSoftmaxLayer(2, "SMAX");

            sm.Weights.InitValuesUniformCPU(0.1f);
            return(net);
        }
Пример #2
0
        static void Main(string[] args)
        {
            var config = new NetworkConfiguration(
                CostFunctionType.Quadratic,
                new FlatDecayer(0.5),
                28, 1);

            var network = new Network(config);

            network.AddConvolutionalLayer(5, 5, LearningRateAnnealerType.Adagrad);
            network.AddPoolingLayer(2);
            network.AddDetectorLayer(ActivatorType.LogisticActivator);
            network.AddConvolutionalLayer(5, 3, LearningRateAnnealerType.Adagrad);
            network.AddPoolingLayer(2);
            network.AddDetectorLayer(ActivatorType.LogisticActivator);
            network.AddFullyConnectedLayer(5, ActivatorType.LogisticActivator, LearningRateAnnealerType.Adagrad);
            network.AddFullyConnectedLayer(4, ActivatorType.LogisticActivator, LearningRateAnnealerType.Adagrad);

            foreach (var item in MnistReader.ReadTrainingData())
            {
                var data  = item.Data.ConvertPixels();
                var input = new double[1, data.GetLength(0), data.GetLength(1)];

                for (int i = 0; i < data.GetLength(0); i++)
                {
                    for (int j = 0; j < data.GetLength(1); j++)
                    {
                        input[0, i, j] = data[i, j];
                    }
                }

                var error = network.TrainModel(input, GetTargetOutput(item.Label));
            }
        }