Beispiel #1
0
        public override InternalArray Forward(InternalArray ar)
        {
            ar = bn.Forward(ar);

            if (ar.Data != null && ar.Data.Any(z => float.IsInfinity(z) || float.IsNaN(z)))
            {
            }
            if (ar.QIntData != null)
            {
                return(binop.fpbin_conv2d(ar, Weight, Bias, Alpha, kernelSize, stride, padding));;
            }
            var ret = binop.bin_conv2d(ar, Weight, Bias, Alpha, kernelSize, stride, padding);

            if (ar.Data != null && ret.Data.Any(z => float.IsInfinity(z) || float.IsNaN(z)))
            {
            }
            return(ret);
        }
Beispiel #2
0
        public override InternalArray Forward(InternalArray ar)
        {
            results.Clear();
            results.Add(new LogInfo(null, ar.Clone(), "input"));
            ar = conv1.Forward(ar);
            results.Add(new LogInfo(conv1, ar.Clone()));


            ar = bn1.Forward(ar);
            results.Add(new LogInfo(bn1, ar.Clone()));

            ar = Relu(ar);
            results.Add(new LogInfo(null, ar.Clone(), "relu1"));

            ar = pool1.Forward(ar);
            results.Add(new LogInfo(pool1, ar.Clone()));

            if (ar.Data.Any(z => float.IsInfinity(z) || float.IsNaN(z)))
            {
            }
            ar = conv2.Forward(ar);
            results.Add(new LogInfo(conv2, ar.Clone(), "BinConv2D conv2"));


            if (ar.Data.Any(z => float.IsInfinity(z) || float.IsNaN(z)))
            {
            }
            ar = bn2.Forward(ar);
            results.Add(new LogInfo(bn2, ar.Clone()));


            ar = Relu(ar);
            results.Add(new LogInfo(null, ar.Clone(), "relu2"));
            ar = pool2.Forward(ar);
            results.Add(new LogInfo(pool2, ar.Clone()));

            var ar2 = new InternalArray(new int[] { 1, 4 * 4 * 50 });

            for (int i = 0; i < ar.Data.Length; i++)
            {
                ar2.Data[i] = ar.Data[i];
            }
            results.Add(new LogInfo(null, ar.Clone(), "view"));


            ar = fc1.Forward(ar2);
            results.Add(new LogInfo(fc1, ar.Clone(), "BinLinear fc1"));

            ar = bn3.Forward(ar);
            results.Add(new LogInfo(bn3, ar.Clone()));

            ar = Relu(ar);
            results.Add(new LogInfo(null, ar.Clone(), "relu3"));
            //input 500
            ar = fc2.Forward(ar);
            results.Add(new LogInfo(fc1, ar.Clone()));


            //output 10
            //output size should be [1,10]
            results.Add(new LogInfo(null, ar.Clone(), "output"));
            return(ar);
        }