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); } } }
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); } }