如何存储Lasagne神经网络对象



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

不用pickle保存整个网络,只需使用保存其参数

values=千层面.layers.get_all_param_values(net1)

在Lasagne的官方教程中,您可以看到get_all_param_values返回表示参数值的numpy数组列表。您可以使用numpy.savez保存它们,它可以将多个数组以未压缩的.npz格式存储在一个文件中。您也可以使用numpy.savez_compressed.压缩它们

为了将参数加载到你的CNN中,首先你必须生成网络架构(显然它必须与你之前训练的相同),然后你可以使用np.load从磁盘加载参数,并最终将它们分配给网络调用:

千层面.set_all_param_values(net1,values)

如果要将Python对象存储到磁盘,则需要序列化。当您想要序列化时,您需要pickle或。。。它是"兄弟"cPickle,有时比pickle快数千倍。

相关内容

  • 没有找到相关文章

最新更新