1

我正在尝试使用 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。我怎样才能在光盘上存储这么大的物体?

阿维塞克

4

2 回答 2

2

您可以使用以下方法仅保存其参数,而不是使用 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,值)

于 2016-04-15T23:14:22.057 回答
0

如果要将Python 对象存储到 disc,则需要序列化。当你想要序列化时,你需要pickle或者......它是“兄弟” cPickle,有时可能比pickle.

于 2016-01-25T15:20:34.540 回答