我正在尝试使用 Lasagne 和 NoLearn 训练 CNN。学习结束后,我想存储神经网络参数。
具体来说,
nn = net1.fit(X_train, y_train) # train neural net
with open('nn.pickle', 'wb') as f:
pickle.dump(nn2, f, -1)
我无法使用 pickle() 因为对象 (nn) 的大小是几十 GB。我怎样才能在光盘上存储这么大的物体?
阿维塞克
您可以使用以下方法仅保存其参数,而不是使用 pickle 保存整个网络:
值 = lasagne.layers.get_all_param_values(net1)
在官方Lasagne 教程中,您可以看到 get_all_param_values 返回代表参数值的 numpy 数组列表。您可以使用 numpy.savez 保存它们,能够将多个数组以未压缩的 .npz 格式存储到一个文件中。您还可以使用 numpy.savez_compressed 压缩它们。
为了将参数加载到您的 CNN 中,首先您必须生成网络架构(显然它必须与您之前训练的相同),然后您可以使用 np.load 从磁盘加载参数,最后将它们分配给网络调用:
lasagne.layers.set_all_param_values(net1,值)
如果要将Python 对象存储到 disc,则需要序列化。当你想要序列化时,你需要pickle
或者......它是“兄弟” cPickle
,有时可能比pickle
.