Ejemplo n.º 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);
                }
            }
        }
Ejemplo n.º 2
0
        private static void InitializeKvstore(KvStore kvstore,
                                              IList <List <NdArray> > paramArrays,
                                              Dictionary <string, NdArray> argParams,
                                              IList <string> paramNames,
                                              bool updateOnKvstore)
        {
            for (int idx = 0; idx < paramArrays.Count; idx++)
            {
                var paramOnDevs = paramArrays[idx];
                kvstore.Init(idx, argParams[paramNames[idx]]);

                if (updateOnKvstore)
                {
                    kvstore.Pull(idx, paramOnDevs, priority: -idx);
                }
            }
        }
Ejemplo n.º 3
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);
     }
 }