Exemplo n.º 1
0
 private void ComputeBiasGradient(double[,,] gradients)
 {
     for (int i = 0; i < gradients.GetLength(0); i++)
     {
         _biasOptimizers[i].SetGradient(gradients.GetChannel(i).Cast <double>().Sum());
     }
 }
Exemplo n.º 2
0
 private void ComputeFilterGradients(double[,,] gradients)
 {
     _weightOptimizers
     .AsParallel()
     .Select((q, i) => new { Kernel = q, Index = i })
     .ForAll(q =>
     {
         var dEdO = gradients.GetChannel(q.Index);
         for (int j = 0; j < _cache.GetLength(0); j++)
         {
             var dedf = MatrixHelper.Convolution(_cache.GetChannel(j), dEdO);
             q.Kernel
             .GetChannel(j)
             .ForEach((w, ii, jj) => w.SetGradient(dedf[ii, jj]));
         }
     });
 }