首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关于神经元网络类型和拓扑的推荐

关于神经元网络类型和拓扑的推荐
EN

Stack Overflow用户
提问于 2014-03-02 21:42:50
回答 2查看 125关注 0票数 1

我有一个关于微控制器应用的研究项目。有一个带有2×2磁传感器和一个磁铁的板。目的是利用4个传感器(极左、远右、近左、近右)的数据计算磁体的位置(X,Y,Z)。传感器的输出电压为0.5伏特(没有磁场,输出电压为2.5伏特)。

现在我想训练一个神经元网络,从4个传感器输入,预测磁铁的x,y,z坐标。但我不知道正确的神经元网络类型(多层感知器、阿达林、霍普菲尔德等)和拓扑结构(每层有多少层和多少个隐神经元)。

上周,我用乐高积木来测量磁铁的“精确”位置,并保存了传感器数据。您可以在这里找到度量:xyz.csv。这是测量高度/z= 10.6毫米的节选。

代码语言:javascript
复制
Lt.Far  Rt.Far  Lt.Near Rt.Near X   Y   Z
2.45357 2.43891 2.43891 2.52688 -16 -16 10.6
2.45846 2.46334 2.51222 2.6784  -8  -16 10.6
2.48289 2.46334 2.63441 2.68328 0   -16 10.6
2.49267 2.45357 2.69306 2.54643 8   -16 10.6
2.46334 2.43402 2.56598 2.48778 16  -16 10.6
2.46334 2.51222 2.46823 2.65396 -16 -8  10.6
2.51711 2.64907 2.62463 3.14272 -8  -8  10.6
2.69306 2.72239 3.15738 3.38221 0   -8  10.6
2.74194 2.56598 3.41642 2.84457 8   -8  10.6
2.58065 2.45846 2.77615 2.53666 16  -8  10.6
2.48289 2.62952 2.46823 2.69795 -16 0   10.6
2.66862 3.18671 2.66373 3.33822 -8  0   10.6
3.24536 3.4262  3.33822 3.57282 0   0   10.6
3.46041 2.83969 3.63148 2.90323 8   0   10.6
2.81525 2.51222 2.90811 2.54643 16  0   10.6
2.49267 2.65885 2.45357 2.57576 -16 8   10.6
2.69306 3.26979 2.54154 2.81036 -8  8   10.6
3.37732 3.57282 2.81525 2.93255 0   8   10.6
3.5826  2.88368 2.88368 2.65396 8   8   10.6
2.8739  2.51711 2.6393  2.49756 16  8   10.6
2.47312 2.55621 2.42913 2.50244 -16 16  10.6
2.56598 2.76637 2.46334 2.54154 -8  16  10.6
2.81036 2.84946 2.50733 2.55621 0   16  10.6
2.87879 2.63441 2.52199 2.51711 8   16  10.6
2.64907 2.47801 2.48778 2.47312 16  16  10.6

(前4列是以伏特为单位的传感器输入,最后3列是以mm为单位的位置)

我第一次尝试使用神经工作室来创建一个像这样的多层感知器网络:

但是当我开始训练时,总网络错误会非常,非常,非常缓慢地下降。

我希望在神经元网络方面有经验的人能给我一个网络类型和拓扑结构选择的建议。

另外,:这里有一些测量图:

左边的-Voltage,接近感应器的电压:

-Voltage (左),靠近传感器(以伏特计),它依赖于所有被测点(左)与固定点(X=-8mm,Y=0mm,Z=1mm)之间的距离,而仅适用于y=0mm处XZ平面上的点:

EN

回答 2

Stack Overflow用户

发布于 2014-03-02 22:19:24

MLP应该可以。让它尽可能简单(但不要简单)。首先尝试一个隐藏层,尽可能少的神经元,例如从4-5-3开始(单个隐藏层有5个神经元)。训练和验证网络,并且只增加更多的层或神经元,只要它们提供价值。

请记住将您的培训集分为培训集和验证集,否则您将面临数据过度拟合的风险,特别是如果您选择了一个复杂的网络。只要在验证中获得较低的错误,就可以增加复杂性。如果您开始在培训集上看到较低的错误,但是在未见数据上没有差异/更高的错误,那么您就太适合了,应该回到一个更简单的网络。

还可以考虑标准化您的数据,因为它有助于培训,例如,创建一个坐标系统和电压参考系统,其中输入和输出都被缩放,以帮助培训算法收敛。这里有一篇关于规范化和编码的好文章。

票数 0
EN

Stack Overflow用户

发布于 2014-03-02 22:19:46

我通常不喜欢人们回答诸如“如何使用X来解决Z”这样的问题,比如“当你可以使用Y时为什么使用X”,所以我提前为这样做道歉。

在你的情况下,我只需要从4组3组的4个传感器的值中三角测量磁铁的位置,而不需要训练神经网络。

如果你的传感器贴上了这样的标签:

代码语言:javascript
复制
A o ---------------o B
  |\             / |
  |  \         /   |
  |    \     /     |
  |      \ /       |
  |      / \       |
  |    /     \     |
  |  /         \   |
  |/             \ |
D o ---------------o C

然后你有以下4组(A,B,C) (A,D,C) (D,A,B)和(B,C,D)。找出磁体的X,Y,Z坐标可归结为求解棱镜这是一个几何问题。

也就是说,如果你想用神经网络来完成这个任务,你就必须尝试不同的配置,直到你对结果感到满意为止。

  • 确保你有一个非常大的训练集。
  • 然后创建单独的交叉验证数据集。

其思想是利用训练集对网络进行训练,利用交叉验证集来探讨神经网络地形、学习系数等各种参数变化的影响。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22133916

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档