예제 #1
0
        protected override void BackPropInternal(Tensor outputGradient)
        {
            Tensor.Conv2DInputsGradient(outputGradient, Kernels, Stride, InputsGradient[0]);
            Tensor.Conv2DKernelsGradient(Inputs[0], outputGradient, Stride, Tensor.PaddingType.Valid, KernelsGradient);

            if (UseBias)
            {
                BiasGradient.Add(outputGradient.SumBatches());
            }
        }
예제 #2
0
파일: Dense.cs 프로젝트: uzbekdev1/Neuro
        protected override void BackPropInternal(Tensor outputGradient)
        {
            // for explanation watch https://www.youtube.com/watch?v=8H2ODPNxEgA&t=898s
            // each input is responsible for the output error proportionally to weights it is multiplied by
            Weights.Transposed().Mul(outputGradient, InputsGradient[0]);

            WeightsGradient.Add(outputGradient.Mul(Inputs[0].Transposed()).SumBatches(), WeightsGradient);
            if (UseBias)
            {
                BiasGradient.Add(outputGradient.SumBatches(), BiasGradient);
            }
        }