예제 #1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="delta"></param>
        /// <returns></returns>
        public Matrix <float> Backward(Matrix <float> delta)
        {
            // Calculate gradient
            ActivationDerivative.Clear();
            m_activation.Derivative(OutputActivations.Data(), ActivationDerivative.Data());

            // Calculate delta for next layer
            delta.PointwiseMultiply(ActivationDerivative, m_delta);

            return(m_delta);
        }
예제 #2
0
        public double Evaluate(double[] actual, double[] actualNonActivated, double[] expected, double[] errors, IActivation activation)
        {
            double[] activationDerivative = activation.Derivative(actualNonActivated);
            this.Derivative(actual, expected, errors);

            double res = 0;

            for (int i = 0; i < actual.Length; i++)
            {
                var err = activationDerivative[i] * errors[i];
                errors[i] = err;
                res      += err * err;
            }
            return(res);
        }