如何存储神经网络知识数据?

我对这个领域还比较陌生,所以这个问题可能看起来有点奇怪。不过,在提问之前,我已经阅读了一些关于机器学习的关键点和神经网络作用部分的入门文章。其中包括非常有用的什么是机器学习这篇文章。根据我的理解,一个经过训练的神经网络(如果有误请纠正):

  1. 是一组神经元之间的连接(可能有自连接,可能有门控等)。
  2. 在每个连接上形成的激活概率。

这两者在训练过程中都会进行调整,以尽可能接近预期的输出。那么,当我们对一个经过训练的神经网络满意时,我们会将测试数据子集加载到其中,并检查其表现如何。但如果我们对测试结果满意,并希望存储这些“教育成果”,而不是在数据集有新值时再次运行训练,该怎么办呢?

所以我的问题是——除了RAM之外,这些教育知识是否存储在其他地方?是否可以像对象序列化那样导出,以便明天或以后获取新数据时不需要再次训练神经网络?

现在,我正在尝试使用我的数据集制作一个简单的演示,使用synaptic.js,但我在项目wiki中找不到关于保存教育成果的概念。这个库只是一个例子,如果你能提到一些Python库会更好!


回答:

在我的回答中,我假设你正在使用一个简单的多层感知器(MLP),尽管我的回答也适用于其他网络。

“训练”MLP的目的是找到正确的突触权重,以最小化网络输出的错误。

当一个神经元连接到另一个神经元时,其输入会被赋予一个权重。神经元执行一个函数,比如所有输入的加权和,然后输出结果。

一旦你训练了你的网络,并找到了这些权重,你可以使用一个验证集来验证结果。

如果你对网络的表现满意,你只需记录你应用到每个连接的权重。你可以将这些权重存储在任何你喜欢的地方(连同网络结构的描述),然后稍后检索它们。每次你想使用这个网络时,都不需要重新训练它。

希望这对你有帮助。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注