1
私はnet.params [layer] .diffがウェイト、すなわちnet.params [layer] .dataに対する損失関数の導関数でなければならないことを知っていますが、次の例では混乱します.3層(ip1 、ip2、ip3)完全に接続されたネット。実際にCaffeのnet.params [layer] .diffに格納されているものは?
import caffe
caffe.set_mode_cpu()
import numpy as np
solver = caffe.SGDSolver('solver.prototxt')
solver.net.copy_from('iter_18000.caffemodel')
solver.net.forward()
solver.net.backward()
# the computed derivatives of ip3
# shape of ip3: (10, 300)
computed = np.dot(np.transpose(solver.net.blobs['ip3'].diff), solver.net.blobs['ip2'].data)
# actual derivatives of ip3
actual = solver.net.params['ip3'][0].diff
print np.count_nonzero(computed - actual)
結果は2260です。誰か説明できますか?多くのthx。
なぜあなたは 'count_nonzero()'を使って比較していますか? ['np.allclose()'](https://docs.scipy.org/doc/numpy-1.13.0/reference/generated/numpy.allclose.html)を試しましたか? – Shai
これは 'False'を返します。私はまた、それらの間の正確な違いを印刷しようとし、大きな違いを見つける。 – NooFear
どのように重要ですか? – Shai