同じ重みとバイアスを持つ2つのネットワークを作成しようとしています。同様の学習曲線が必要です。反復2では、2つのネットワークのすべてのブロブは同じです(データ&差分)が、パラメータ(重みは&のバイアス)が異なります。Pycafe-同じ重みとバイアスを持つ2つのネットワークを作成する
私はここで間違っていますか?
注:ネットワーク内には、データセットとドロップアウトレイヤのシャッフルはありません。
おかげ
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
反復の後に、私はネットワーク2(すべてのバイアス&すべての重量)にネットワーク1のコピーは、初期点は同じです。学習プロセスでは、両方のネットワークのパラメータに違いはないと思います。 –