rcnn = caffe.Net('fastrcnn.prototxt',caffe.TEST,weights='fastrcnn.caffemodel')
mine = caffe.Net('mynetwork.prototxt',caffe.TRAIN)
def copy_weights(from_net,to_net):
for key in from_net.params.keys():
try:
for i in range(len(from_net.params[key])):
#print i,"from", np.array(from_net.params[key][i].shape), "to", np.array(to_net.params[key][i].shape)
to_net.params[key][i].data.flat = from_net.params[key][i].data.flat
except Exception as e:
print("copying data for layer ",key, " failed with ",e)
if key in to_net.params.keys():
if (len(from_net.params[key])>len(to_net.params[key])):
print("target layer has no bias weights")
else:
print("copying from shape",np.array(from_net.params[key][i].shape), "to", np.array(to_net.params[key][i].shape))
else:
print "layer not defined in destination network"
copy_weights(rcnn,mine)