she*_*hen 6 javascript python machine-learning neural-network
我是那个地区的新手,所以这个问题可能看起来很奇怪.然而,在询问之前,我已经阅读了大量关于机器学习的关键点以及神经网络的作用部分的介绍性文章.包括非常有用的一个什么是机器学习.基本上我得到了它 - 一个受过教育的NN(如果错的话,纠正我):
在训练期间调整两件事以尽可能接近预期输出.然后,我们用受过教育的NN做什么 - 我们将测试数据子集加载到其中并检查它的执行情况.但是如果我们对测试结果感到满意并且我们希望存储教育结果而不是在数据集获得新值时再次运行训练会发生什么.
所以我的问题是 - 教育知识存储在RAM以外的某个地方吗?可以转储(在某种程度上考虑对象序列化),这样您就不需要使用明天或以后获得的数据来教育您的NN.
现在我正在尝试使用synaptic.js使用我的数据集进行简单演示,但我无法发现在项目维基中保存教育的那种概念.那个库只是一个例子,如果你引用一些python lib会很好!
我将在答案中假设您正在使用简单的多层感知器(MLP),尽管我的答案也适用于其他网络.
"训练"MLP的目的是找到正确的突触权重,以最小化网络输出上的错误.
当神经元连接到另一个神经元时,其输入被赋予权重.神经元执行一个函数,例如所有输入的加权和,然后输出结果.
训练网络并找到这些权重后,您可以使用验证集验证结果.
如果您对网络运行良好感到满意,则只需记录应用于每个连接的权重.您可以将这些权重存储在任何位置(以及网络结构的描述),然后再检索它们.每次您想要使用它时都无需重新训练网络.
希望这可以帮助.
关于通过synaptic.js存储它:
这很容易做到!它实际上有一个内置的功能.有两种方法可以做到这一点.
如果您想在不重新训练的情况下使用网络
这将创建您的网络的独立功能,您可以使用javascript在任何地方使用它,而无需synaptic.js!维基
var standalone = myNetwork.standalone();
Run Code Online (Sandbox Code Playgroud)
如果您想稍后修改网络
只需将您的网络转换为JSON即可.这可以随时使用synaptic.js加载!维基
// Export the network to a JSON which you can save as plain text
var exported = myNetwork.toJSON();
// Conver the network back to useable network
var imported = Network.fromJSON(exported);
Run Code Online (Sandbox Code Playgroud)