三层bp神经网络matlab代码实现
时间: 2023-09-06 16:07:12 浏览: 94
基于matlab的三层bp神经网络源程序代码.zip
5星 · 资源好评率100%
以下是一个简单的三层bp神经网络的Matlab代码实现:
```matlab
% 数据集
X = [0 0 1; 0 1 1; 1 0 1; 1 1 1];
y = [0 1 1 0]';
% 随机初始化权重
theta1 = rand(3,4);
theta2 = rand(4,1);
% 迭代次数
epochs = 5000;
% 学习率
alpha = 0.1;
% 训练神经网络
for i = 1:epochs
% 前向传播
a1 = X;
z2 = a1 * theta1;
a2 = sigmoid(z2);
z3 = a2 * theta2;
y_hat = sigmoid(z3);
% 计算误差
delta3 = (y_hat - y) .* sigmoidGradient(z3);
delta2 = (delta3 * theta2') .* sigmoidGradient(z2);
% 更新权重
theta2 = theta2 - alpha * (a2' * delta3);
theta1 = theta1 - alpha * (a1' * delta2);
end
% 使用训练好的神经网络进行预测
X_test = [0 0 1; 0 1 1; 1 0 1; 1 1 1];
y_test = [0 1 1 0]';
a1_test = X_test;
z2_test = a1_test * theta1;
a2_test = sigmoid(z2_test);
z3_test = a2_test * theta2;
y_hat_test = sigmoid(z3_test);
disp(y_hat_test);
```
其中,`sigmoid` 和 `sigmoidGradient` 函数可以用来计算 sigmoid 函数及其导数:
```matlab
function g = sigmoid(z)
g = 1 ./ (1 + exp(-z));
end
function g = sigmoidGradient(z)
g = sigmoid(z) .* (1 - sigmoid(z));
end
```
阅读全文