Neural network 神经网络偏倚简单加工 我在MATLAB中创建了一个神经网络,现在我计划在C++中使用权重并实现网络。网络工作,但现在我试图在C++中实现它,我觉得我并不真正理解它。

Neural network 神经网络偏倚简单加工 我在MATLAB中创建了一个神经网络,现在我计划在C++中使用权重并实现网络。网络工作,但现在我试图在C++中实现它,我觉得我并不真正理解它。,neural-network,Neural Network,举一个非常简单的例子:一个输入->隐藏层中的三个节点tansig->一个输出节点purelin 第一层的输入权重为:9.3842, 7.1205 , -14.6497 偏差为:-7.8820, -3.4257, -14.2522 输出节点的权重为:0.5760,-0.9019,-0.4809 偏差为:-0.1413 我一直在尝试输入:0和0.498,目标是5.0145和5.3314 问题是我无法通过手动执行计算来获得或接近这些目标。要让您了解我在做什么,请将0作为输入 0*w1+b=-7.88

举一个非常简单的例子:一个输入->隐藏层中的三个节点tansig->一个输出节点purelin

第一层的输入权重为:9.3842, 7.1205 , -14.6497

偏差为:-7.8820, -3.4257, -14.2522

输出节点的权重为:0.5760,-0.9019,-0.4809

偏差为:-0.1413

我一直在尝试输入:0和0.498,目标是5.0145和5.3314

问题是我无法通过手动执行计算来获得或接近这些目标。要让您了解我在做什么,请将0作为输入

0*w1+b=-7.8820

0*w2+b2=-3.4257

0*w3+b3=-14.2522

应用激活函数tansig:

输出1=tansig-7.8820=-1

输出2=tansig-3.4257=-.997

输出3=tansig-14.2522=-1

对于最后一个节点

输出1*weight1=-.5760

输出2*权重2=.900

输出3*权重3=.4809

总和+b=0.9462

我认为它是这样工作的,但显然不是。我想也许我不明白tansig激活函数发生了什么

感谢您的阅读和帮助,

您的tansig激活函数范围为-1到1,因此它可能是一个tanh。它看起来像一个S形*2-1或arctan*2/PI,但曲线变化有点不同。您可能想看看tanh的样子:

您的伪代码看起来不错,但我没有尝试重新输入数字。也许你唯一忘记写的是:

sum = output1*weight1 + output2*weight2 + output3*weight3
final_output = sum + b

不要忘记权重在这样的神经网络中是随机初始化的,它们需要通过反向传播算法通过大循环中每个权重上的许多梯度下降或其他类似的学习技术来学习。

所以,愚蠢的我,问题是我忘了缩放。Matlab中的神经网络自动在[0,1]之间缩放输入。

这是编程问题吗?如果是这样,您需要显示您的代码。如果没有,您可能希望将其移动到CrossValidated。我认为缺少一些权重,在隐藏层中,权重应该大于3,每个节点的权重应该为3。