【问题标题】:Storing and using a trained neural network存储和使用经过训练的神经网络
【发布时间】:2016-12-16 11:51:42
【问题描述】:

我正在尝试开发一个神经网络来预测时间序列。

据我所知,我正在使用训练集训练我的神经网络,并使用测试集对其进行验证。

当我对我的结果感到满意时,我可以使用我的神经网络来预测新值,而神经网络本身基本上就是我使用我的训练集调整的所有权重。

这对吗?

如果是这样,我应该只训练我的网络一次,然后只使用我的网络(权重)来预测未来的值。您通常如何避免重新计算整个网络?我是否应该将所有权重保存在数据库或其他东西中,这样我就可以随时访问它而无需再次训练它?

如果我的理解是正确的,我可以受益于在专用计算机(例如超级计算机)上进行繁重的计算,然后在网络服务器、iPhone 应用程序或类似的东西上使用我的网络,但我不知道如何存储它。

【问题讨论】:

  • 或许您可以使用pickle 将您训练好的神经网络存储到一个文件中。见docs.python.org/2/library/pickle.html
  • 如果您使用的是神经网络框架,请提及,因为该框架可能具有加载/保存权重的 API。

标签: python machine-learning neural-network recurrent-neural-network heavy-computation


【解决方案1】:

要使您的神经网络持久,您可以pickle 它。您无需重新计算 trained-pickled 网络的权重,只需解开网络并使用它进行新的预测。

有像joblib 这样的库可用于更高效的序列化/酸洗

是否重新训练 NN 的问题并非微不足道。这取决于您使用网络的确切用途;说Reinforcement learning 可能需要你重新训练新的信念。但在某些情况下,可能在这种情况下,一次且始终使用经过训练的网络可能就足够了,或者在您拥有更多现场数据的未来重新训练。

【讨论】:

    猜你喜欢
    • 2011-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-20
    • 1970-01-01
    • 2010-11-20
    • 2019-09-15
    相关资源
    最近更新 更多