Esempio n. 1
0
        public void Filler_GaussianDense(double meanParam, double stdParam)
        {
            var blob   = new Tensor(2, 3, 4, 5);
            var config = new GaussianFillerConfiguration(meanParam, stdParam);
            var filler = new GaussianFiller(config);

            filler.Fill(blob);

            double mean = 0;
            double var  = 0;

            int count = blob.Count;

            using (var blobCpu = blob.OnCpu())
            {
                for (int i = 0; i < count; i++)
                {
                    mean += blobCpu.DataAt(i);
                    var  += (blobCpu.DataAt(i) - config.Mean) * (blobCpu.DataAt(i) - config.Mean);
                }

                mean /= count;
                var  /= count;

                Assert.True(mean >= config.Mean - config.Std * 5);
                Assert.True(mean <= config.Mean + config.Std * 5);

                double targetVar = config.Std * config.Std;
                Assert.True(var >= (targetVar / 5.0d));
                Assert.True(var <= (targetVar * 5.0d));
            }
        }
Esempio n. 2
0
        public void Filler_GaussianDense(double meanParam, double stdParam)
        {
            var blob = new Tensor(2, 3, 4, 5);
            var config = new GaussianFillerConfiguration(meanParam, stdParam);
            var filler = new GaussianFiller(config);
            filler.Fill(blob);

            double mean = 0;
            double var = 0;

            int count = blob.Count;

            using (var blobCpu = blob.OnCpu())
            {
                for (int i = 0; i < count; i++)
                {
                    mean += blobCpu.DataAt(i);
                    var += (blobCpu.DataAt(i) - config.Mean) * (blobCpu.DataAt(i) - config.Mean);
                }

                mean /= count;
                var /= count;

                Assert.True(mean >= config.Mean - config.Std * 5);
                Assert.True(mean <= config.Mean + config.Std * 5);

                double targetVar = config.Std * config.Std;
                Assert.True(var >= (targetVar / 5.0d));
                Assert.True(var <= (targetVar * 5.0d));
            }
        }
Esempio n. 3
0
        public void Filler_GaussianSparse(double meanParam, double stdParam)
        {
            var blob   = new Tensor(2, 3, 4, 5);
            var config = new GaussianFillerConfiguration(meanParam, stdParam)
            {
                IsSparse = true
            };

            var filler = new GaussianFiller(config);

            filler.Fill(blob);

            double mean = 0;
            double var  = 0;

            using (var blobCpu = blob.OnCpu())
            {
                int count  = blob.Count;
                int zeroes = 0;

                for (int i = 0; i < count; i++)
                {
                    if (blobCpu.DataAt(i) == 0.0d)
                    {
                        zeroes++;
                    }
                    else
                    {
                        mean += blobCpu.DataAt(i);
                        var  += (blobCpu.DataAt(i) - config.Mean) * (blobCpu.DataAt(i) - config.Mean);
                    }
                }

                mean /= (count - zeroes);
                var  /= (count - zeroes);

                Assert.True(mean >= config.Mean - config.Std * 5);
                Assert.True(mean <= config.Mean + config.Std * 5);

                double targetVar = config.Std * config.Std;
                Assert.True(var >= (targetVar / 5.0d));
                Assert.True(var <= (targetVar * 5.0d));
            }
        }
Esempio n. 4
0
        public void Filler_GaussianSparse(double meanParam, double stdParam)
        {
            var blob = new Tensor(2, 3, 4, 5);
            var config = new GaussianFillerConfiguration(meanParam, stdParam) { IsSparse = true };

            var filler = new GaussianFiller(config);
            filler.Fill(blob);

            double mean = 0;
            double var = 0;

            using (var blobCpu = blob.OnCpu())
            {
                int count = blob.Count;
                int zeroes = 0;

                for (int i = 0; i < count; i++)
                {
                    if (blobCpu.DataAt(i) == 0.0d)
                    {
                        zeroes++;
                    }
                    else
                    {
                        mean += blobCpu.DataAt(i);
                        var += (blobCpu.DataAt(i) - config.Mean) * (blobCpu.DataAt(i) - config.Mean);
                    }
                }

                mean /= (count - zeroes);
                var /= (count - zeroes);

                Assert.True(mean >= config.Mean - config.Std * 5);
                Assert.True(mean <= config.Mean + config.Std * 5);

                double targetVar = config.Std * config.Std;
                Assert.True(var >= (targetVar / 5.0d));
                Assert.True(var <= (targetVar * 5.0d));
            }
        }