bp神经网络matlab实例
时间: 2023-08-31 11:09:26 浏览: 36
以下是一个简单的BP神经网络在MATLAB中的实现示例:
```matlab
% 训练数据
X = [0 0 1; 0 1 1; 1 0 1; 1 1 1];
y = [0; 1; 1; 0];
% 初始化神经网络参数
input_layer_size = 3;
hidden_layer_size = 4;
output_layer_size = 1;
W1 = randn(input_layer_size, hidden_layer_size);
W2 = randn(hidden_layer_size, output_layer_size);
% 定义激活函数(sigmoid函数)和其导数
sigmoid = @(z) 1./(1+exp(-z));
sigmoid_gradient = @(z) sigmoid(z).*(1-sigmoid(z));
% 定义损失函数(平方误差函数)
cost = @(a, y) 0.5*sum((a-y).^2);
% 设置训练参数
learning_rate = 0.1;
num_iterations = 10000;
% 训练神经网络
for i = 1:num_iterations
% 正向传播
z2 = X*W1;
a2 = sigmoid(z2);
z3 = a2*W2;
a3 = sigmoid(z3);
% 计算损失
J = cost(a3, y);
% 反向传播
delta3 = (a3-y).*sigmoid_gradient(z3);
delta2 = delta3*W2'.*sigmoid_gradient(z2);
% 更新参数
W2 = W2 - learning_rate*a2'*delta3;
W1 = W1 - learning_rate*X'*delta2;
end
% 预测结果
z2 = X*W1;
a2 = sigmoid(z2);
z3 = a2*W2;
a3 = sigmoid(z3);
disp(a3) % 输出预测结果
```
该示例实现了一个具有一个隐藏层的BP神经网络,并使用平方误差函数作为损失函数进行训练。在训练过程中,使用随机梯度下降法来更新神经网络参数,最终输出预测结果。