Пример #1
0
        private static void UpdateParams(
            IList <List <NdArray> > paramArrays,
            IList <List <NdArray> > gradArrays,
            Action <int, NdArray, NdArray> updater,
            int numDevice,
            KvStore kvstore = null)
        {
            for (int index = 0; index < paramArrays.Count; index++)
            {
                var argList  = paramArrays[index];
                var gradList = gradArrays[index];
                if (gradList[0] == null)
                {
                    continue;
                }
                if (kvstore != null)
                {
                    //push gradient, priority is negative index
                    kvstore.Push(index, gradList, priority: -index);
                    //pull back the weights
                    kvstore.Pull(index, argList, priority: -index);
                }

                for (int k = 0; k < argList.Count; k++)
                {
                    var w = argList[k];
                    var g = gradList[k];


                    updater(index * numDevice + k, g, w);
                }
            }
        }
Пример #2
0
 private static void UpdateParamsOnKvstore(
     IList <List <NdArray> > paramArrays,
     IList <List <NdArray> > gradArrays,
     KvStore kvstore)
 {
     for (int index = 0; index < paramArrays.Count; index++)
     {
         var argList  = paramArrays[index];
         var gradList = gradArrays[index];
         if (gradList[0] == null)
         {
             continue;
         }
         //push gradient, priority is negative index
         kvstore.Push(index, gradList, priority: -index);
         //pull back the weights
         kvstore.Pull(index, argList, priority: -index);
     }
 }