如何存储烤宽面条神经网络对象

时间:2016-01-07 18:25:02

标签: python pickle lasagne nolearn

我正在尝试使用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

2 个答案:

答案 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快数千倍。