Пример #1
0
        private void runMethod(object obj)
        {
            //TwoLayerNet.Test();
            //testRiceNet.Test(obj as Form1);
            //testRiceNet.Detection();
            //testCustomNet.Test(obj as Form1);
            //testCustomNet.Detection();
            //goodNet.Test(obj as Form1);
            TestRice rice = new TestRice();

            //rice.Test();
            rice.StartTrain(50);
        }
Пример #2
0
        public void TestTest()
        {
            LLayer   layer = new LLayer();
            TestRice test  = new TestRice();

            test.LayerInfo                     = new LayerParamsInfo[1];
            test.LayerInfo[0]                  = new LayerParamsInfo();
            test.LayerInfo[0].Bias             = new double[2];
            test.LayerInfo[0].DBias            = new double[2];
            test.LayerInfo[0].WehtInfo         = new WehtInfo[2][];
            test.LayerInfo[0].WehtInfo[0]      = new WehtInfo[3];
            test.LayerInfo[0].WehtInfo[0][0]   = new WehtInfo();
            test.LayerInfo[0].WehtInfo[0][1]   = new WehtInfo();
            test.LayerInfo[0].WehtInfo[0][2]   = new WehtInfo();
            test.LayerInfo[0].WehtInfo[0][0].W = new double[, ] {
                { 0.7, -0.1, 1.2 },
                { 0.2, 0.6, -1.3 },
                { 0.2, 0.6, -1.3 },
            };
            test.LayerInfo[0].WehtInfo[0][1].W = new double[, ] {
                { 0.8, -0.1, 1.2 },
                { 0.2, -0.1, -1.3 },
                { 0.2, 0.6, -1.3 },
            };
            test.LayerInfo[0].WehtInfo[0][2].W = new double[, ] {
                { 0.1, 0.1, 1.2 },
                { 3.2, -0.1, -1.3 },
                { 0.2, 1.6, -0.3 },
            };

            test.LayerInfo[0].WehtInfo[1]      = new WehtInfo[3];
            test.LayerInfo[0].WehtInfo[1][0]   = new WehtInfo();
            test.LayerInfo[0].WehtInfo[1][1]   = new WehtInfo();
            test.LayerInfo[0].WehtInfo[1][2]   = new WehtInfo();
            test.LayerInfo[0].WehtInfo[1][0].W = new double[, ] {
                { 0.7, -0.1, 1.2 },
                { 0.2, 0.6, -1.3 },
                { 0.2, 0.6, -1.3 },
            };
            test.LayerInfo[0].WehtInfo[1][1].W = new double[, ] {
                { 0.8, -0.1, 1.2 },
                { 0.2, -0.1, -1.3 },
                { 0.2, 0.6, -1.3 },
            };
            test.LayerInfo[0].WehtInfo[1][2].W = new double[, ] {
                { 0.1, 0.1, 1.2 },
                { 3.2, -0.1, -1.3 },
                { 0.2, 1.6, -0.3 },
            };

            test.LayerInfo[0].Bias[0] = 0.21;
            test.LayerInfo[0].Bias[1] = 0.03;

            var input = CreateInput();
            var res   = test.forward(input, 0);

            layer.CheckResult(res, "正向传播结果");
            var backres = test.backward(res, 0);

            //layer.CheckResult(test.LayerInfo[0].DBias, "偏置求导值");
            //layer.CheckResult(test.LayerInfo[0].WehtInfo, "权重求导值");
            layer.CheckResult(backres, "反向传播结果");
            //layer.CheckResult(input.GetNextDimVal(0).Flatten(), "矩阵展开结果");
            Assert.Fail();
        }