用matlab写三层BP神经网络代码
时间: 2023-11-04 10:06:04 浏览: 39
以下是一个用Matlab实现的三层BP神经网络的示例代码:
```matlab
% 设计一个三层BP神经网络
% 输入层节点数
input_num = 2;
% 隐藏层节点数
hidden_num = 3;
% 输出层节点数
output_num = 1;
% 随机初始化权重和偏置
W1 = randn(hidden_num, input_num);
b1 = randn(hidden_num, 1);
W2 = randn(output_num, hidden_num);
b2 = randn(output_num, 1);
% 学习率
learning_rate = 0.1;
% 训练数据
X = [0 0; 0 1; 1 0; 1 1];
Y = [0; 1; 1; 0];
% 训练循环
for i = 1:10000
% 前向传播
Z1 = W1 * X' + b1;
A1 = 1 ./ (1 + exp(-Z1));
Z2 = W2 * A1 + b2;
A2 = 1 ./ (1 + exp(-Z2));
% 计算损失函数
loss = sum((Y' - A2).^2) / size(Y, 1);
% 反向传播
dZ2 = A2 - Y';
dW2 = dZ2 * A1';
db2 = sum(dZ2, 2);
dZ1 = W2' * dZ2 .* A1 .* (1 - A1);
dW1 = dZ1 * X;
db1 = sum(dZ1, 2);
% 更新权重和偏置
W2 = W2 - learning_rate * dW2;
b2 = b2 - learning_rate * db2;
W1 = W1 - learning_rate * dW1;
b1 = b1 - learning_rate * db1;
end
```
这个代码实现了一个 XOR 逻辑门的训练,输入为两个二进制位,输出为它们的异或结果。您可以根据您的需求调整输入、输出和隐藏层节点数,以及训练数据。