#1 楼
您可以在微控制器上训练神经网络吗?也许吧,但是请不要尝试。您可以在微控制器上使用NN进行分类吗?当然,只要您可以计算传播节点和边值的结果并处理乘法。评论
$ \ begingroup $
我同意。假设您可以在Arduino上获得具有所需复杂度的神经网络进行训练,那么您仍将花费大量的训练时间。 NN的外部训练是顺理成章的方法。
$ \ endgroup $
–fgb
2012年11月28日23:43
#2 楼
当然可以在Arduino上实现它。这里有3个实现神经网络的Arduino库:Neuroduino
Arduino基础知识
ArduinoANN
Arduino可以处理的是一个单独的问题,尤其是在培训方面-培训数据的数万次迭代。在快速的机器上进行训练,然后将神经元权重复制到Arduino,将是开发实现的更明智的方法。
#3 楼
是。如果您仅以前馈模式运行它,并且离线进行其他地方的培训:我在Arduino UNO上编写了3层(5-5-2)前馈ANN。它在移动机器人上运行。每当机器人撞到东西时,它将重新训练网络。网络的前馈部分是实时运行的;而反向传播训练大约需要5到20秒。我想您可以调整网络的大小以及使用参数来使其运行更快一些,但是如果您打算在Arduino上进行反向传播,我认为它会太慢。
加快速度的一些想法包括:
使用固定点与浮点数(对于不带FPU的MCU)
使用具有FPU的MCU
/>使用更简单的激活功能(即$ \ tanh $)代替Sigmoid
让培训阶段离线在PC上进行吗?
这里是我在网络上做的快速记述。
评论
出于好奇,您为什么要这么做?我不是该领域的专家,但最后我听说,对NN的训练是在仿真中完成的,并且该NN是在机箱上实现的,并且可能是一个具有比Arduino高级别控制器的控制器。 >
好吧,您不必链接它,只需在仿真中训练NN,然后提取NN的拓扑,包括边缘权重和节点链接。然后,您对NN进行编程(这只是您要求解的一个方程式)。我认为在进行此项目之前,需要做更多的研究。
可能值得一提的是我16岁,这是我在高中的电子专业。
在这种情况下,我认为您在尝试实现这一目标时超出了职责范围?