Esempio n. 1
0
        static Symbol get_ocrnet(int batchSize)
        {
            using (NameScop scop = new NameScop())
            {
                var data  = Symbol.Variable("data");
                var label = Symbol.Variable("softmax_label");
                var conv1 = Symbol.Convolution(data, kernel: new Shape(5, 5), numFilter: 32);
                var pool1 = Symbol.Pooling(conv1, poolType: Symbol.PoolingPoolType.Max, kernel: new Shape(2, 2),
                                           stride: new Shape(1, 1));
                var relu1 = Symbol.Activation(data: pool1, actType: Symbol.ActivationActType.Relu);

                var conv2 = Symbol.Convolution(relu1, kernel: new Shape(5, 5), numFilter: 32);
                var pool2 = Symbol.Pooling(data: conv2, poolType: Symbol.PoolingPoolType.Avg,
                                           kernel: new Shape(2, 2), stride: new Shape(1, 1));
                var relu2 = Symbol.Activation(data: pool2, actType: Symbol.ActivationActType.Relu);
                var conv3 = Symbol.Convolution(data: relu2, kernel: new Shape(3, 3), numFilter: 32);
                var pool3 = Symbol.Pooling(data: conv3, poolType: Symbol.PoolingPoolType.Avg,
                                           kernel: new Shape(2, 2), stride: new Shape(1, 1));
                var relu3   = Symbol.Activation(data: pool3, actType: Symbol.ActivationActType.Relu);
                var flatten = Symbol.Flatten(data: relu3);
                var fc1     = Symbol.FullyConnected(data: flatten, numHidden: 512);
                var fc21    = Symbol.FullyConnected(data: fc1, numHidden: 10);
                var fc22    = Symbol.FullyConnected(data: fc1, numHidden: 10);
                var fc23    = Symbol.FullyConnected(data: fc1, numHidden: 10);
                var fc24    = Symbol.FullyConnected(data: fc1, numHidden: 10);
                var fc2     = Symbol.Concat(new Symbol[] { fc21, fc22, fc23, fc24 }, 4, dim: 0);
                label = Symbol.Transpose(data = label);
                label = Symbol.Reshape(data = label, shape: new Shape((uint)(batchSize * 4)));
                return(Symbol.SoftmaxOutput("softmax", fc2, label));
            }
        }