예제 #1
0
        /// <summary>
        /// Estimate the mean of a visible neuron in an RBM. Propagate downward part, from hidden to visible.
        /// </summary>
        /// <param name="rbm">The RBM to use.</param>
        /// <param name="h">The hidden neurons.</param>
        /// <param name="i">The visible neuron to use.</param>
        /// <param name="b">Bias value.</param>
        /// <returns>The estimated mean.</returns>
        public double PropDown(RestrictedBoltzmannMachine rbm, double[] h, int i, double b)
        {
            double sum = 0.0;

            for (int j = 0; j < rbm.HiddenCount; j++)
            {
                sum += rbm.Layer.Weights[j][i] * h[j];
            }
            sum += b;
            return(RestrictedBoltzmannMachine.Sigmoid(sum));
        }
예제 #2
0
        /// <summary>
        /// Estimate the mean of a hidden neuron in an RBM. Propagate upward part, from visible to hidden.
        /// </summary>
        /// <param name="rbm">The RBM to use.</param>
        /// <param name="v">The input (v), visible neurons.</param>
        /// <param name="w">The weights.</param>
        /// <param name="b">The bias.</param>
        /// <returns>The mean.</returns>
        public double PropUp(RestrictedBoltzmannMachine rbm, double[] v, double[] w, double b)
        {
            double sum = 0.0;

            for (int j = 0; j < rbm.VisibleCount; j++)
            {
                sum += w[j] * v[j];
            }
            sum += b;
            return(RestrictedBoltzmannMachine.Sigmoid(sum));
        }