Accord.Neuro.Networks.DeepBeliefNetwork.Push C# (CSharp) Method

Push() public method

Stacks a new Boltzmann Machine at the end of this network.
public Push ( RestrictedBoltzmannMachine network ) : void
network RestrictedBoltzmannMachine The machine to be added to the network.
return void
        public void Push(RestrictedBoltzmannMachine network)
        {
            int lastLayerNeurons;

            if (machines.Count > 0)
                lastLayerNeurons = machines[machines.Count - 1].Hidden.Neurons.Length;
            else lastLayerNeurons = inputsCount;

            machines.Add(network);

            // Override AForge layers
            layers = new Layer[machines.Count];
            for (int i = 0; i < layers.Length; i++)
                layers[i] = machines[i].Hidden;
        }

Same methods

DeepBeliefNetwork::Push ( int neurons ) : void
DeepBeliefNetwork::Push ( int neurons, IStochasticFunction function ) : void
DeepBeliefNetwork::Push ( int neurons, IStochasticFunction visibleFunction, IStochasticFunction hiddenFunction ) : void

Usage Example

        public void PushPopTest()
        {
            DeepBeliefNetwork network = new DeepBeliefNetwork(6, 2, 9);

            Assert.AreEqual(2, network.Machines.Count);
            Assert.AreEqual(6, network.InputsCount);
            Assert.AreEqual(9, network.OutputCount);
            Assert.AreEqual(2, network.Machines[0].Hidden.Neurons.Length);
            Assert.AreEqual(9, network.Machines[1].Hidden.Neurons.Length);
            Assert.AreEqual(6, network.Machines[0].Visible.Neurons.Length);
            Assert.AreEqual(2, network.Machines[1].Visible.Neurons.Length);

            network.Pop();

            Assert.AreEqual(1, network.Machines.Count);
            Assert.AreEqual(6, network.InputsCount);
            Assert.AreEqual(2, network.OutputCount);
            Assert.AreEqual(2, network.Machines[0].Hidden.Neurons.Length);
            Assert.AreEqual(6, network.Machines[0].Visible.Neurons.Length);

            network.Push(4);
            network.Push(10);

            Assert.AreEqual(3, network.Machines.Count);
            Assert.AreEqual(6, network.InputsCount);
            Assert.AreEqual(10, network.OutputCount);
            Assert.AreEqual(2, network.Machines[0].Hidden.Neurons.Length);
            Assert.AreEqual(4, network.Machines[1].Hidden.Neurons.Length);
            Assert.AreEqual(10, network.Machines[2].Hidden.Neurons.Length);

            Assert.AreEqual(6, network.Machines[0].Visible.Neurons.Length);
            Assert.AreEqual(2, network.Machines[1].Visible.Neurons.Length);
            Assert.AreEqual(4, network.Machines[2].Visible.Neurons.Length);

            network.Pop();

            Assert.AreEqual(2, network.Machines.Count);
            Assert.AreEqual(6, network.InputsCount);
            Assert.AreEqual(4, network.OutputCount);
            Assert.AreEqual(2, network.Machines[0].Hidden.Neurons.Length);
            Assert.AreEqual(4, network.Machines[1].Hidden.Neurons.Length);

            Assert.AreEqual(6, network.Machines[0].Visible.Neurons.Length);
            Assert.AreEqual(2, network.Machines[1].Visible.Neurons.Length);
        }