我对那个领域并不熟悉,所以这个问题似乎很奇怪。然而,在询问之前,我阅读了大量介绍性文章,内容涉及机器学习中的关键点以及神经网络的作用部分。包括非常有用的一个什么是机器学习?。基本上,就像我所得到的一样--受过良好教育的NN是(如果它是错的,请纠正我):
这两件事都会在培训期间进行调整,以尽可能接近预期的产出。然后,我们如何使用一个受过良好教育的NN -我们加载测试子集的数据,并检查它的表现有多好。但是,如果我们对测试结果感到满意,并且希望存储教育结果,然后在dataset获得新值时不再运行培训,那么会发生什么呢?
所以我的问题是--教育知识是储存在除了RAM之外的地方吗?可以转储(从某种程度上考虑对象序列化),这样您就不需要使用明天或以后获得的数据对NN进行教育。
现在我试着用synaptic.js用我的数据集做一个简单的演示,但是我找不到在项目的wiki中保存教育的那种概念。这个库只是一个例子,如果您引用一些python就可以了!
发布于 2016-02-24 22:47:02
我将在我的答案中假设您正在使用一个简单的多层感知器,尽管我的答案也适用于其他网络。
“训练”MLP的目的是找到正确的突触权重,以最小化网络输出上的错误。
当一个神经元连接到另一个神经元时,它的输入被赋予一个权重。神经元执行一个函数,例如所有输入的加权和,然后输出结果。
一旦您对网络进行了培训,并找到了这些权重,就可以使用验证集验证结果。
如果您对您的网络运行良好感到高兴,您只需记录应用于每个连接的权重。您可以随心所欲地存储这些权重(以及对网络结构的描述),然后再检索它们。没有必要在每次你想使用它的时候重新训练网络。
希望这能有所帮助。
发布于 2017-03-01 17:05:16
关于通过synaptic.js存储它:
这是很容易做到的!它实际上有一个内置的功能。有两种方法可以做到这一点。
如果您想使用网络而不需要再次训练它,那么
这将为您的网络创建一个独立的功能,您可以在任何地方使用javascript,而不需要synaptic.js!维基。
var standalone = myNetwork.standalone();
如果您希望稍后在上修改网络,请使用
只需将网络转换为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);
https://stackoverflow.com/questions/35614535
复制相似问题