示例#1
0
        private void load(StreamReader sr, InnerProductLayer <T> layer)
        {
            for (int i = 0; i < layer.blobs.Count; i++)
            {
                List <float> rgf     = new List <float>();
                string       strLine = sr.ReadLine();
                string[]     rgstr   = strLine.Split(',');

                for (int j = 0; j < rgstr.Length; j++)
                {
                    rgf.Add(BaseParameter.ParseFloat(rgstr[j]));
                }

                layer.blobs[i].mutable_cpu_data = Utility.ConvertVec <T>(rgf.ToArray());
            }

            for (int i = 0; i < layer.internal_blobs.Count; i++)
            {
                List <float> rgf     = new List <float>();
                string       strLine = sr.ReadLine();
                string[]     rgstr   = strLine.Split(',');

                for (int j = 0; j < rgstr.Length; j++)
                {
                    rgf.Add(BaseParameter.ParseFloat(rgstr[j]));
                }

                layer.internal_blobs[i].mutable_cpu_data = Utility.ConvertVec <T>(rgf.ToArray());
            }
        }
示例#2
0
        private void save(StreamWriter sw, InnerProductLayer <T> layer)
        {
            for (int i = 0; i < layer.blobs.Count; i++)
            {
                float[] rgf     = Utility.ConvertVecF <T>(layer.blobs[i].mutable_cpu_data);
                string  strLine = "";

                for (int j = 0; j < rgf.Length; j++)
                {
                    strLine += rgf[j].ToString() + ",";
                }

                sw.WriteLine(strLine.TrimEnd(','));
            }

            for (int i = 0; i < layer.internal_blobs.Count; i++)
            {
                float[] rgf     = Utility.ConvertVecF <T>(layer.internal_blobs[i].mutable_cpu_data);
                string  strLine = "";

                for (int j = 0; j < rgf.Length; j++)
                {
                    strLine += rgf[j].ToString() + ",";
                }

                sw.WriteLine(strLine.TrimEnd(','));
            }
        }
        public void InnerProductLayer_BackwardGradient(int output, FillerConfiguration weightsFiller, FillerConfiguration biasFiller)
        {
            bool useBias = biasFiller != null;

            var config = new InnerProductLayerConfiguration(output, useBias, weightsFiller, biasFiller);
            var layer = new InnerProductLayer(config);

            var checker = new GradientChecker(1e-4f, 1e-3f);
            checker.CheckExhaustive(layer, bottom, top);
        }
示例#4
0
        public void InnerProductLayer_BackwardGradient(int output, FillerConfiguration weightsFiller, FillerConfiguration biasFiller)
        {
            bool useBias = biasFiller != null;

            var config = new InnerProductLayerConfiguration(output, useBias, weightsFiller, biasFiller);
            var layer  = new InnerProductLayer(config);

            var checker = new GradientChecker(1e-4f, 1e-3f);

            checker.CheckExhaustive(layer, bottom, top);
        }
示例#5
0
        public void InnerProductLayer_Setup()
        {
            var config = new InnerProductLayerConfiguration(10);

            var layer = new InnerProductLayer(config);

            layer.Setup(bottom, top);

            Assert.Equal(2, top.Num);
            Assert.Equal(10, top.Channels);
            Assert.Equal(1, top.Height);
            Assert.Equal(1, top.Width);
        }
        public void InnerProductLayer_Forward()
        {
            var weightsFiller = new UniformFillerConfiguration(0, 1);
            var biasFiller = new UniformFillerConfiguration(1, 2);

            var config = new InnerProductLayerConfiguration(10, true, weightsFiller, biasFiller);

            var layer = new InnerProductLayer(config);
            layer.Setup(bottom, top);
            layer.Forward(bottom, top);

            using (var topCpu = top.OnCpu())
            {
                int count = top.Count;

                for (int i = 0; i < count; i++)
                    Assert.True(topCpu.DataAt(i) >= 1f);
            }
        }
示例#7
0
        public void InnerProductLayer_Forward()
        {
            var weightsFiller = new UniformFillerConfiguration(0, 1);
            var biasFiller    = new UniformFillerConfiguration(1, 2);

            var config = new InnerProductLayerConfiguration(10, true, weightsFiller, biasFiller);

            var layer = new InnerProductLayer(config);

            layer.Setup(bottom, top);
            layer.Forward(bottom, top);

            using (var topCpu = top.OnCpu())
            {
                int count = top.Count;

                for (int i = 0; i < count; i++)
                {
                    Assert.True(topCpu.DataAt(i) >= 1f);
                }
            }
        }
        public void InnerProductLayer_Setup()
        {
            var config = new InnerProductLayerConfiguration(10);

            var layer = new InnerProductLayer(config);
            layer.Setup(bottom, top);

            Assert.Equal(2, top.Num);
            Assert.Equal(10, top.Channels);
            Assert.Equal(1, top.Height);
            Assert.Equal(1, top.Width);
        }