我最近阅读了有关受限环境中的神经网络(特别是在廉价的八位微控制器上的神经网络实现)及其在IoT设备上的应用(例如,基于传感器输入进行预测的回归等)。

这对于处理时间不是很关键的简单应用程序似乎很理想,并且要处理的数据相对较少。但是,进一步的研究表明,在资源受限的环境中训练神经网络是一个糟糕的主意(请参阅“是否可以在微控制器上运行神经网络”的答案)。我联系过的Cotton,Wilamowski和Dündar的方法?在物联网网络中,是否有必要在功能更强大的设备上训练专为低资源使用而设计的网络?如本文所述,根据该时间和一天中的时间等来预测所需的锅炉设置。根据用户提供的更多数据,培训对于更改神经网络的输出将非常有用。这个Quora问题很好地描述了一个类似的场景,并讨论了神经网络的实现细节,但是我的问题更多地集中在在执行器本身上运行网络是否可行。

评论

古玩,您是否打算在每个传感器/执行器节点上或某个(半)集中式“大脑”上运行神经网络(当然,不一定要使用8位限制)?

@Ghanima如果可能的话,我想在执行器节点上这样做,以节省额外的复杂性,尽管我不确定这是否可以在有限的约束下使用。

@ Aurora0001您在此处放置的特定控制器可能不适合训练您的NN,但是嵌入式计算机视觉世界正竭尽全力做到这一点。如果您试图找到一种具有适合此类任务的架构的微控制器,那么我建议您寻求那些为计算机视觉行业开发此类硬件的公司。我确信其中一些可以重新调整用途并适合您的要求。一个很好的起点

@grldsndrs太棒了,谢谢参考。如果您认为足够就可以将其作为附加答案发布(我一定会对它满意)

8位处理器可以执行宽字处理器可以执行的任何操作,但可能(取决于任务)更慢。但是,8位处理器往往具有有限的本机地址空间,这意味着它们必须使用间接方法来管理非常大的内存,并且在微控制器的情况下,往往会附带相对少量的片上内存。最低端以外的成本差异越来越小-MCU成本的主要驱动力可以说是存储器,而不是ALU宽度。

#1 楼

根据第一篇论文,跑步不是问题。那是目的。最大权重只有一个限制:


目前,此微控制器中嵌入的体系结构的限制仅受所需权数的限制。目前,神经网络仅限于256个权重。但是,对于大多数嵌入式应用程序而言,这256个权重不应限制系统。





对于培训,据我了解所描述的实现,PIC控制器从外部神经源。


编写了神经网络正向计算,以便在一系列嵌套循环中分别计算每个神经元。每个循环的计算数量和每个节点的值都存储在内存中的一个简单数组中。

[...]

这些数组包含体系结构和网络的权重。目前,出于演示目的,在对芯片进行编程时会预先加载这些阵列,但在最终版本中则没有必要。可以很容易地将微控制器修改为包含一个简单的引导加载程序,该加载程序利用板载RS232串行端口从远程位置接收重量和地形数据。这将允许在芯片处于现场时修改权重,甚至整个网络。


我怀疑训练也是在外部进行的。 PIC的内存。



Wilamowski,BM;棉花,北; Hewlett,J .; Kaynak,O。,
“具有二阶学习算法的神经网络训练器”,
Wilamowski,B.M .;棉花,新泽西。俄亥俄州Kaynak; Dundar,G.,
“在任意连接的神经网络中计算梯度向量和Jacobean矩阵的方法,”

现在,我研究了描述网络体系结构的第一个
及其使用的算法。但是这里使用的神经网络训练器软件是在MATLAB中实现的。


当前,几乎没有可用的神经网络训练软件来训练完全连接的网络。因此,为此在MATLAB中开发了带有图形用户界面的软件包。该软件
允许用户轻松输入非常复杂的体系结构以及初始权重,训练参数,数据集以及几种强大的算法的选择。


我不得不提到,对于同一任务,完全连接的网络具有比逐层体系结构更低的权重数。

我不是神经网络专家,它很复杂,所以我可能会错,但是基于这些论文,我会说Cotton,Wilamowski和Dündar的方法需要关于在微控制器上运行神经网络的意法半导体(ST Microelectronics)刚刚发布了一个工具包STM32Cube.AI:将神经网络转换为STM32的优化代码将经过预训练的神经网络从流行的库转换为大多数STM32 MCU。