private void init(StochasticLayer hidden, StochasticLayer visible) { this.hidden = hidden; this.visible = visible; inputsCount = hidden.InputsCount; hiddenCount = hidden.Neurons.Length; weightsGradient = new double[inputsCount][]; for (int i = 0; i < weightsGradient.Length; i++) weightsGradient[i] = new double[hiddenCount]; visibleBiasGradient = new double[inputsCount]; hiddenBiasGradient = new double[hiddenCount]; weightsUpdates = new double[inputsCount][]; for (int i = 0; i < weightsUpdates.Length; i++) weightsUpdates[i] = new double[hiddenCount]; visibleBiasUpdates = new double[inputsCount]; hiddenBiasUpdates = new double[hiddenCount]; storage = new ThreadLocal<ParallelStorage>(() => new ParallelStorage(inputsCount, hiddenCount)); }
/// <summary> /// Creates a new <see cref="RestrictedBoltzmannMachine"/>. /// </summary> /// /// <param name="function">The activation function to use in the network neurons.</param> /// <param name="inputsCount">The number of inputs for the machine.</param> /// <param name="hiddenNeurons">The number of hidden neurons in the machine.</param> /// public RestrictedBoltzmannMachine(IStochasticFunction function, int inputsCount, int hiddenNeurons) : base(function, inputsCount, 1) { this.visible = new StochasticLayer(function, inputsCount, hiddenNeurons); this.hidden = new StochasticLayer(function, hiddenNeurons, inputsCount); base.layers[0] = hidden; }
/// <summary> /// Creates a new <see cref="RestrictedBoltzmannMachine"/>. /// </summary> /// /// <param name="hidden">The hidden layer to be added in the machine.</param> /// <param name="visible">The visible layer to be added in the machine.</param> /// public RestrictedBoltzmannMachine(StochasticLayer hidden, StochasticLayer visible) : base(null, hidden.InputsCount, 0) { this.hidden = hidden; this.visible = visible; base.layers[0] = hidden; }
private void createAlgorithms() { algorithms = new IUnsupervisedLearning[network.Machines.Count]; for (int i = 0; i < network.Machines.Count; i++) { StochasticLayer hidden = network.Machines[i].Hidden; StochasticLayer visible = network.Machines[i].Visible; algorithms[i] = configure(hidden, visible, i); } }
/// <summary> /// Creates a new <see cref="ContrastiveDivergenceLearning"/> algorithm. /// </summary> /// /// <param name="hidden">The hidden layer of the hidden-visible layer pair to be trained.</param> /// <param name="visible">The visible layer of the hidden-visible layer pair to be trained.</param> /// public ContrastiveDivergenceLearning(StochasticLayer hidden, StochasticLayer visible) { init(hidden, visible); }