我已經預訓練了一個VGG網絡,它是一個chainer加載的npz文件格式,但是添加了一個新的FC層到最後一層,並且我修改了最後一層的輸出class_number。 我已經修改了圖層名稱,以便將chainer加載文件用於其他未更改的圖層。 但我失敗了。如何加載pretrained chainer npz參數文件但修改某些圖層?
Traceback (most recent call last):
File "chainercv/trainer/train.py", line 194, in <module>
main()
File "chainercv/trainer/train.py", line 85, in main
mean_file=args.mean) # 可改爲/home/machen/face_expr/result/snapshot_model.npz
File "/home/machen/face_expr/chainercv/links/model/faster_rcnn/faster_rcnn_vgg.py", line 131, in __init__
chainer.serializers.load_npz(pretrained_model, self)
File "/usr/local/anaconda3/lib/python3.6/site-packages/chainer-3.0.0a1-py3.6.egg/chainer/serializers/npz.py", line 140, in load_npz
d.load(obj)
File "/usr/local/anaconda3/lib/python3.6/site-packages/chainer-3.0.0a1-py3.6.egg/chainer/serializer.py", line 82, in load
obj.serialize(self)
File "/usr/local/anaconda3/lib/python3.6/site-packages/chainer-3.0.0a1-py3.6.egg/chainer/link.py", line 794, in serialize
d[name].serialize(serializer[name])
File "/usr/local/anaconda3/lib/python3.6/site-packages/chainer-3.0.0a1-py3.6.egg/chainer/link.py", line 794, in serialize
d[name].serialize(serializer[name])
File "/usr/local/anaconda3/lib/python3.6/site-packages/chainer-3.0.0a1-py3.6.egg/chainer/link.py", line 550, in serialize
data = serializer(name, param.data)
File "/usr/local/anaconda3/lib/python3.6/site-packages/chainer-3.0.0a1-py3.6.egg/chainer/serializers/npz.py", line 106, in __call__
dataset = self.npz[key]
File "/usr/local/anaconda3/lib/python3.6/site-packages/numpy/lib/npyio.py", line 237, in __getitem__
raise KeyError("%s is not a file in the archive" % key)
KeyError: 'head/score_mod/W is not a file in the archive'
如何在修改圖層名稱之前加載模型? 加載訓練模型時,它會查找圖層名稱來分配參數,所以我認爲加載時需要原始圖層名稱。 – corochann
我想修改FC層的輸出神經元數量,所以預訓練模型不能用於這一層。我想爲我的模型添加新圖層。 – machen