我在烤宽面条中训练了一个神经网络,并用以下代码保存了网络参数:
np.savez('model.npz', *lasagne.layers.get_all_param_values(network))
现在我想加载模型并将参数设置到网络中,这样我就可以测试它是否正常工作。我正在用这段代码加载参数:
with np.load('model.npz') as f:
param_values = [f['arr_%d' % i] for i in range(len(f.files))]
然后我尝试将网络的参数设置为加载的参数,如下所示:
lasagne.layers.set_all_param_values(self._output_layer, param_values, allow_input_downcast=True)
但后来我得到了这个错误:
> Traceback (most recent call last):
File "snake_player.py", line 406, in <module>
player = SnakePlayer()
File "snake_player.py", line 99, in __init__
self.loadModel()
File "snake_player.py", line 328, in loadModel
lasagne.layers.set_all_param_values(self._output_layer, param_values, allow_input_downcast=True, trainable=True)
File "C:Anaconda2libsite-packageslasagnelayershelper.py", line 446, in set_all_param_values
(len(values), len(params)))
ValueError: mismatch: got 10 values to set 0 parameters
然而,当我得到网络中的所有参数并查看长度时,有10个参数。
x = lasagne.layers.get_all_param_values(self._output_layer)
len(x) # 10
所以参数的数量是相同的,不知怎么的,我仍然会得到这个错误。知道为什么吗?我是不是忽略了什么?
我很感激你的帮助。
如果在没有allow_input_downcast=True
标志的情况下调用set_all_param_values
,则不会发生这种情况。