You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MATLAB中提取双层隐藏层神经网络数学方程遇结果偏差求解决

问题诊断与解决方案

核心错误点

  • 重复应用激活函数:你的手动计算中,h3 = tansig(b3+W_H2TO*h2)已经是输出层的激活结果(对应网络的最终输出),但你额外执行了Output = tansig(h3),相当于在输出层后多叠加了一层tansig,直接导致结果与net(input)不一致。
  • 输入维度匹配问题:MATLAB神经网络要求输入为列向量,若x是行向量,矩阵乘法会出现维度不匹配或计算逻辑错误。

正确的手动计算步骤

1. 提取网络参数

% 提取各层偏置
b1 = net.b{1};  % 输入层→隐藏层1的偏置(6×1)
b2 = net.b{2};  % 隐藏层1→隐藏层2的偏置(4×1)
b3 = net.b{3};  % 隐藏层2→输出层的偏置(1×1)

% 提取各层权重
W_ITH = net.IW{1,1};    % 输入层→隐藏层1的权重(6×11)
W_H1TH2 = net.LW{2,1};  % 隐藏层1→隐藏层2的权重(4×6)
W_H2TO = net.LW{3,2};   % 隐藏层2→输出层的权重(1×4)

2. 确保输入为列向量

x = [0.613497 1 1 0.660657 0.675336 0.150442 0.343584 0.162069 0.655799 0.574284 9.83E-05]';

3. 计算网络输出

% 隐藏层1输出
h1 = tansig(W_ITH * x + b1);
% 隐藏层2输出
h2 = tansig(W_H1TH2 * h1 + b2);
% 输出层结果(无需额外激活)
Output = tansig(W_H2TO * h2 + b3);

此时计算出的Output应与net(x)的结果完全一致,可通过isequal(Output, net(x))直接验证。

通用数学方程

针对你的网络结构,输出的数学表达式如下:

给定输入列向量 $\boldsymbol{x} \in \mathbb{R}^{11 \times 1}$:

  1. 隐藏层1净输入:$\boldsymbol{z_1} = W_{ITH} \boldsymbol{x} + \boldsymbol{b_1}$,其中 $W_{ITH} \in \mathbb{R}^{6 \times 11}$,$\boldsymbol{b_1} \in \mathbb{R}^{6 \times 1}$
  2. 隐藏层1输出:$\boldsymbol{h_1} = \text{tansig}(\boldsymbol{z_1}) = \frac{2}{1+e^{-2\boldsymbol{z_1}}} - 1$
  3. 隐藏层2净输入:$\boldsymbol{z_2} = W_{H1TH2} \boldsymbol{h_1} + \boldsymbol{b_2}$,其中 $W_{H1TH2} \in \mathbb{R}^{4 \times 6}$,$\boldsymbol{b_2} \in \mathbb{R}^{4 \times 1}$
  4. 隐藏层2输出:$\boldsymbol{h_2} = \text{tansig}(\boldsymbol{z_2})$
  5. 输出层净输入:$z_3 = W_{H2TO} \boldsymbol{h_2} + b_3$,其中 $W_{H2TO} \in \mathbb{R}^{1 \times 4}$,$b_3 \in \mathbb{R}^{1 \times 1}$
  6. 最终输出:$y = \text{tansig}(z_3)$

内容的提问来源于stack exchange,提问作者Mahmoud

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 01:55:14