matlab神经网络输出与输入之间的显式公式

matlab神经网络输出与输入之间的显式公式,matlab,neural-network,Matlab,Neural Network,你好,我有一个关于我的神经网络的问题。我使用一个具有两个隐藏层的神经网络,激活函数为tansig和purelin。我有4个输入和一个输出。 我在第一层训练了25个神经元,在第二层训练了1个神经元。这是我的系统的示意图 我的ANN输出和我的目标之间有很好的一致性 但是在训练网络之后,当我想推导出系统的方程时,奇怪的事情发生了 我发现系统的权重和偏差如下 b1=First layer bias= net.b{1} b2=Second layer bias=net.b{2} Firstlayer

你好,我有一个关于我的神经网络的问题。我使用一个具有两个隐藏层的神经网络,激活函数为tansig和purelin。我有4个输入和一个输出。 我在第一层训练了25个神经元,在第二层训练了1个神经元。这是我的系统的示意图

我的ANN输出和我的目标之间有很好的一致性

但是在训练网络之后,当我想推导出系统的方程时,奇怪的事情发生了

我发现系统的权重和偏差如下

b1=First layer bias= net.b{1}
b2=Second layer bias=net.b{2}
Firstlayer weight net.IW{1,1}
Secondlayer weight net.LW{2,1}
当我使用这个公式时:

Y=b2+secondlayer weight*tanh((firstlayerweight*X+b1))
当X是我的输入时,我的测量数据和这个公式的结果之间有很大的差异,比如我得到的输出比它们应该的大1000倍

有人能帮我吗?这个公式正确吗

编辑: 以下是我的权重和偏差矩阵:

%first layer weights(4*25):
111.993     48.59439    1.604747    -0.76531
10.8245     -107.793    173.7258    -123.2
-149.48     -105.421    102.6071    -79.2133
226.2926    -621.099    2440.947    776.9815
-66.5572    -116.593    -121.067    -55.3703
-9.1293     1.251525    2.716534    -0.3201
0.786728    -1.81314    -5.21815    1.619898
71.98442    -3.67078    -17.8482    5.911515
6.986454    -36.9755    -21.4408    1.50746
0.654341    -5.25562    10.34482    4.589759
0.304266    1.645312    5.004313    -1.51475
0.721048    -0.02945    -0.09663    -0.0004
60.96135    1.182228    4.733361    -0.40264
-1.58998    1.920395    5.533581    -1.71799
0.410825    0.056715    4.564767    -0.1073
2.298645    9.923646    82.42445    -8.89119
-2.46618    -1.59946    -3.41954    -2.68133
0.089749    -1.69783    -5.02845    1.541547
3.516938    0.358534    -10.9719    -0.33401
2.392706    -1.99236    -5.89471    1.815673
1.605158    4.174882    4.227769    -3.14685
-25.2093    -1.68014    -5.249      1.163255
52.30716    -67.498     87.13013    29.61436
9.195869    2.328432    -7.59047    -1.42355
3.120973    1.266733    8.182079    0.365206

%first layer biases(25):
47.07941005
-49.66890557
80.2745463
1251.640193
-228.1521936
-2.905218293
-2.802770641
52.59183653
-50.96014049
7.931255305
3.652513556
-0.125595632
40.47792689
2.343663068
1.712611331
67.61242524
-6.124504787
-3.288283849
-4.752833412
-1.921129618
6.818490015
-6.481531096
5.056644951
1.984717285
7.050001634

%second layer weights(25):
-97.96825145    122.9670213     -124.5566672    -0.046986176    -0.021205068    -5.990650681    1850.804141     2.964275181     -0.333027823    -0.070420859    -583.478589     -68.16211954    12.59658596     1257.471165     -138.4739514    0.07786882      0.238340539     -1546.523224    -2.751936791    363.5612929 -0.152249267    -20.71141251    0.094593198     -0.473042306    5.533999251

%second layer bias(1):
21.92849
例如,当我把X=[8;400;5;9.5]放进去时,我希望得到y=20.8 但是通过使用公式

y=secondbias +secondlayer weight* tanh(firstlayer weight*X+first bias)

我得到y的-111,这很奇怪

你能给出你用来计算公式的Matlab代码吗?看起来您已经在上面放置了伪代码,所以很难判断出什么可能是错误的。乘法的性质很重要。如果你也能给出一个X,权重和Y的期望值,这将有助于人们在发布前检查答案。考虑到你的输入和公式,我复制了你的Y为-111.89的结果。也许在训练NN之前,你正在归一化训练数据吗?如果是这样,您还需要使用从训练集中提取的相同值来更改X,例如,如果归一化为均值0,sd 1,则在使用网络进行预测之前,您需要使用训练集中的均值和sd。是的,这是归一化。。。谢谢