private void Conv()
        {
            Random random = new Random();
            Vector dat    = GetSigXY(random).Item1;
            Vector nnwOut = networkMeneger.Forward(dat);


            GraphCPU graph = new GraphCPU(false);

            // Нейросеть для формирования эмбедингов
            NNW net = new NNW();

            net.Layers.Add(nnw.Layers[0]);
            net.Layers.Add(nnw.Layers[1]);
            net.Layers.Add(nnw.Layers[2]);
            net.Layers.Add(nnw.Layers[3]);
            net.Layers.Add(nnw.Layers[4]);
            net.Layers.Add(nnw.Layers[5]);
            net.Layers.Add(nnw.Layers[6]);
            net.Layers.Add(nnw.Layers[7]);

            Vector hl = net.Activate(new NNValue(dat), graph).ToVector();

            sigChart.PlotBlack(t, dat);
            hChart.BarBlack(hl);
            outChart.PlotBlack(t, nnwOut);
        }
        // Линейный энкодер
        private void creatLin_Click(object sender, EventArgs e)
        {
            lin = true;

            nnw = new NNW();
            nnw.AddNewLayer(new Shape(n), new FeedForwardLayer(h));
            nnw.AddNewLayer(new FeedForwardLayer(n));

            CreateMeneger();
        }
예제 #3
0
        public Agent(NNW model, int degreesOfFreedom, Random random)
        {
            lifes         = new List <Life>();
            graphForward  = new GraphCPU(false);
            graphBackward = new GraphCPU(true);

            this.degreesOfFreedom = degreesOfFreedom;
            this.model            = model;
            this.random           = random;
        }
예제 #4
0
        public ComplexNet()
        {
            InitializeComponent();
            t = new Vector(n);

            double dt = 1.0 / n;

            for (int i = 1; i < n; i++)
            {
                t[i] = t[i - 1] + dt;
            }
            NNW.AddNewLayer(new Shape(n), new ComplexFeedForwardLayer(20, new CSigmoidUnit()));
            NNW.AddNewLayer(new ComplexFeedForwardLayer(outp, new CLinearUnit()));
        }
예제 #5
0
        /// <summary>
        /// Конструктор
        /// </summary>
        /// <param name="model">Модель нейронной сети</param>
        /// <param name="degreesOfFreedom">Количество возможных действий</param>
        /// <param name="random">Генератор рандома</param>
        public MLAgent(NNW model, int degreesOfFreedom, Random random, IOptimizer optimizer = null)
        {
            Generations           = new List <Generation>();
            graphForward          = new GraphCPU(false);
            graphBackward         = new GraphCPU(true);
            this.degreesOfFreedom = degreesOfFreedom;
            this.model            = model;
            this.random           = random;

            if (optimizer == null)
            {
                optimizer = new Adam();
            }

            this.optimizer = optimizer;

            trainer = new Trainer(graphBackward, TrainType.Online, optimizer);
        }
예제 #6
0
        public ImitComplex()
        {
            InitializeComponent();
            t = new Vector(n);

            double dt = 1.0 / n;

            for (int i = 1; i < n; i++)
            {
                t[i] = t[i - 1] + dt;
            }

            NNW.AddNewLayer(new Shape(n), new FeedForwardLayer(100, new ReLU(0.1)));
            NNW.AddNewLayer(new ReShape(new Shape(10, 1, 2)));               // Разделение на реальную и мнимую часть
            NNW.AddNewLayer(new BatchReNormalization());
            NNW.AddNewLayer(new FeedComplexLayer(1000, new EliotSigUnit())); // Комплексный слой
            NNW.AddNewLayer(new DropOut(0.85));
            NNW.AddNewLayer(new Flatten());                                  // Соединение реальной и мнимой части
            NNW.AddNewLayer(new FeedForwardLayer(outp, new SigmoidWithBCE()));
            Console.WriteLine(NNW);
        }
        //Сверточный энкодер
        private void creatConv_Click(object sender, EventArgs e)
        {
            lin = false;


            nnw = new NNW();
            nnw.AddNewLayer(new Shape(n), new Conv1D(3, 8, new ReLU(0.1)));
            nnw.AddNewLayer(new MaxPool1D());
            nnw.AddNewLayer(new Conv1D(3, 16, new ReLU(0.1)));
            nnw.AddNewLayer(new MaxPool1D());
            nnw.AddNewLayer(new Conv1D(3, 16, new ReLU(0.1)));
            nnw.AddNewLayer(new MaxPool1D());
            nnw.AddNewLayer(new Flatten());

            nnw.AddNewLayer(new FeedForwardLayer(h));
            nnw.AddNewLayer(new FeedForwardLayer(64, new ReLU(0.1)));


            nnw.AddNewLayer(new UpSampling1D());
            nnw.AddNewLayer(new Conv1D(3, 32, new ReLU(0.1))
            {
                IsSame = true
            });
            nnw.AddNewLayer(new UpSampling1D());
            nnw.AddNewLayer(new Conv1D(3, 16, new ReLU(0.1))
            {
                IsSame = true
            });
            nnw.AddNewLayer(new UpSampling1D());
            nnw.AddNewLayer(new Conv1D(3, 1, new LinearUnit())
            {
                IsSame = true
            });


            CreateMeneger();
        }
예제 #8
0
 /// <summary>
 /// Загрузить модель обученной нейронной сети
 /// </summary>
 /// <param name="path">путь до модели</param>
 public void LoadModel(string path)
 {
     model = NNW.Load(path);
 }