bp神经网络matlab实例
时间: 2023-09-05 09:09:55 浏览: 70
以下是一个简单的 MATLAB 实现的 BP 神经网络的示例:
```matlab
% 输入数据
input_data = [0 0; 0 1; 1 0; 1 1];
output_data = [0; 1; 1; 0];
% 初始化权重和偏置
w1 = randn(2, 3);
b1 = randn(1, 3);
w2 = randn(3, 1);
b2 = randn(1, 1);
% 训练次数
n_epochs = 100000;
% 学习率
learning_rate = 0.1;
% 训练
for i = 1:n_epochs
% 正向传播
z1 = input_data * w1 + b1;
a1 = sigmoid(z1);
z2 = a1 * w2 + b2;
output = sigmoid(z2);
% 反向传播
error = output - output_data;
delta2 = error .* sigmoid_derivative(output);
delta1 = delta2 * w2' .* sigmoid_derivative(a1);
% 更新权重和偏置
w2 = w2 - learning_rate * a1' * delta2;
b2 = b2 - learning_rate * sum(delta2);
w1 = w1 - learning_rate * input_data' * delta1;
b1 = b1 - learning_rate * sum(delta1);
end
% 预测
predicted_output = zeros(size(output_data));
for i = 1:length(output_data)
z1 = input_data(i, :) * w1 + b1;
a1 = sigmoid(z1);
z2 = a1 * w2 + b2;
output = sigmoid(z2);
predicted_output(i) = output;
end
% 输出结果
disp(predicted_output)
```
其中,`sigmoid` 函数和 `sigmoid_derivative` 函数分别为:
```matlab
function s = sigmoid(x)
s = 1 ./ (1 + exp(-x));
end
function s = sigmoid_derivative(x)
s = sigmoid(x) .* (1 - sigmoid(x));
end
```
此示例使用 BP 神经网络解决 XOR 问题。在训练完成后,该模型能够正确地预测输入数据的输出。
阅读全文