当前位置:  开发笔记 > 人工智能 > 正文

训练神经网络添加

如何解决《训练神经网络添加》经验,为你挑选了2个好方法。

我需要训练一个网络来增加或增加2个输入,但是在20000次迭代之后,它似乎并不适合所有点.更具体地说,我在整个数据集上训练它并且它在最后几点很接近,但似乎对第一个端点没有任何好处.我规范化数据,使其介于-0.8和0.8之间.网络本身由2个输入3个隐藏神经元和1个输出神经元组成.我还将网络的学习率设置为0.25,并将其用作学习函数tanh(x).

对于在数据集中最后训练的点,它非常接近,但对于第一点,它似乎不能很好地近似.我不知道它是什么,它无法帮助它调整好,无论是我正在使用的拓扑还是其他什么?

此网络的隐藏层中有多少神经元适合?



1> Ark-kun..:

由权重= {1,1},偏差= 0和线性激活函数的单个神经元组成的网络执行两个输入数的相加.

乘法可能更难.以下是网络可以使用的两种方法:

    将其中一个数字转换为数字(例如,二进制)并执行乘法,就像在小学一样.a*b = a*(b0*2^0 + b1*2^1 + ... + bk*2^k) = a*b0*2^0 + a*b1*2^1 + ... + a*bk*2^k.这种方法很简单,但需要与输入的长度(对数)成比例的可变数量的神经元b.

    取输入的对数,添加它们并对结果取幂.a*b = exp(ln(a) + ln(b))该网络可以处理任何长度的数字,只要它可以足够接近对数和指数.



2> hzitoun..:

可能为时已晚,但一个简单的解决方案是使用RNN(回归神经网络).

RNN SUM两个数字

将数字转换为数字后,您的NN将从左到右的数字序列中取几个数字.

RNN必须循环其输出之一,以便它可以自动理解有一个数字要携带(如果总和为2,则写入0并携带1).

要训​​练它,你需要给它输入由两个数字组成的输入(一个来自第一个数字,第二个来自第二个数字)和所需的输出.RNN最终会找到如何做到这一点.

请注意,此RNN只需知道以下8个案例即可学习如何将两个数字相加:

带进位的1 + 1,0 + 0,1 + 0,0 + 1

1 + 1,0 + 0,1 + 0,0 + 1无进位

推荐阅读
虎仔球妈_459
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有