【问题标题】:How to Store Lasagne Neural Network Object如何存储千层面神经网络对象
【发布时间】:2016-01-07 18:25:01
【问题描述】:

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

阿维塞克

【问题讨论】:

  • 你的意思是你有 几十 GB 的 RAM??

标签: python pickle lasagne nolearn


【解决方案1】:

您可以使用以下方法仅保存其参数,而不是使用 pickle 保存整个网络:

值 = 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)

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2017-11-18
      • 2011-03-28
      • 2016-09-02
      • 2018-08-14
      • 1970-01-01
      • 2012-09-22
      • 2018-11-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多