我正在尝试使用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。如何在光盘上存储如此大尺寸的物体?
Avisek
答案 0 :(得分:2)
除了使用pickle保存整个网络,您可以使用以下方法保存其参数:
values = lasagne.layers.get_all_param_values(net1)
在官方Lasagne tutorial中,您可以看到get_all_param_values 返回表示参数值的numpy数组列表。您可以使用numpy.savez保存它们,能够以未压缩的.npz格式将多个数组存储到单个文件中。您也可以使用numpy.savez_compressed来压缩它们。
为了将参数加载到CNN中,首先必须生成网络体系结构(显然它必须与之前训练的相同),然后您可以使用np.load从磁盘加载参数,最后将它们分配给网络呼叫:
lasagne.layers.set_all_param_values(net1,values)
答案 1 :(得分:0)
如果要将 Python对象存储到光盘,则需要序列化。如果您想要序列化,则需要pickle
或......它的'兄弟'cPickle
有时比pickle
快数千倍。