I try to create two networks with same weights and biases and I expect similar learning curve. At iteration 2 all blobs in two networks are same( data & Diff) but params(weights & biases) are different!
What I'm doing wrong here ?
note: in network there is not any shuffling for dataset and dropout layer.
Thanks
solver1 = caffe.SGDSolver('lenet_solver.prototxt')
solver2 = caffe.SGDSolver('lenet_solver.prototxt')
solver1.step(1)
solver2.step(1)
CopySolver(solver1,solver2)
for i in range(10):
solver1.step(1)
solver2.step(1)
print solver1.net.params['ip2'][1].diff
print solver2.net.params['ip2'][1].diff
def CopySolver(SolverA,SolverB):
params = SolverA.net.params.keys()
paramsA = {pr: (SolverA.net.params[pr][0].data,SolverA.net.params[pr][1].data) for pr in params}
paramsB = {pr: (SolverB.net.params[pr][0].data,SolverB.net.params[pr][1].data) for pr in params}
for pr in params:
paramsB[pr][1][...] = paramsA [pr][1] #bias
paramsB[pr][0][...] = paramsA [pr][0] #weights