我是机器学习的新手。我想在我的服务器上设置一台机器,并使用数据库来存储学习到的数据。
var colorClassifier = new NeuralNetwork();colorClassifier.trainBatch([ {input: { r: 0.03, g: 0.7, b: 0.5 }, output: 0}, // black {input: { r: 0.16, g: 0.09, b: 0.2 }, output: 1}, // white {input: { r: 0.5, g: 0.5, b: 1.0 }, output: 1} // white ]);console.log(colorClassifier.classify({ r: 1, g: 0.4, b: 0 })); // 0.99 - almost
机器学习框架的代码大致如此,但我希望’colorClassifies’能逻辑上存储在我的数据库中,而不是在内存中,这样我就可以在时间过程中训练这台机器,而不会丢失关于旧训练的数据。我并不真正了解这些框架的内部工作原理,但我认为有可能实现我所要求的功能。谢谢
回答:
“我并不真正了解这些框架的内部工作原理”
无论框架如何工作,训练分类器意味着找到一组权重值,使分类器能够良好工作(通常这意味着最小化平方误差的总和)。因此,一个训练好的分类器本质上是一组实数。要持久化分类器,你需要将这些数字存储到你的数据库中。
每个权重可以由四个数字描述:
- 层号(整数):第一层是输入层,其余是隐藏层(通常是一到两层),按照它们出现的顺序排列。
- 从、到(整数):由于每个权重连接两个节点,这些节点在每层内的序列号
- 权重的值(通常是实数)
例如,如果你有一个从第二层的第三个节点到下一层的第五个节点的值为5.8的权重,你可以将其存储在一个表中
层: 2
从节点: 3
到节点: 5
值: 5.8
通过对所有权重重复此操作(一个简单的for循环),你可以将训练好的网络存储在一个简单的表中。我不知道你的框架是如何工作的,但通常会有一个成员函数,返回训练网络的权重,以列表或哈希映射格式