Exemple #1
0
        public void condMaskUpdate(Real[][] masks, NdArray <Real>[] weights)
        {
            long globalStep = _optimizer.UpdateCount;

            if (isMaskUpdateIter(globalStep))
            {
                for (int i = 0; i < masks.Length; i++)
                {
                    genericMaskUpdate(masks[i], weights[i]);
                }

                lastUpdateStep = globalStep;
            }
            else
            {
                for (int i = 0; i < masks.Length; i++)
                {
                    for (int j = 0; j < masks[i].Length; j++)
                    {
                        weights[i].Grad[j] *= masks[i][j];
                    }
                }

                _optimizer.Update();
            }
        }