bp神经网络matlab实例
时间: 2023-10-31 12:05:59 浏览: 18
以下是一个简单的 MATLAB 神经网络实例,使用反向传播算法进行训练:
```matlab
% 数据集
X = [0 0; 0 1; 1 0; 1 1];
y = [0; 1; 1; 0];
% 神经网络参数
input_layer_size = 2;
hidden_layer_size = 4;
output_layer_size = 1;
% 随机初始化权重
Theta1 = rand(hidden_layer_size, input_layer_size+1) * 2 - 1;
Theta2 = rand(output_layer_size, hidden_layer_size+1) * 2 - 1;
% 训练参数
alpha = 0.1;
num_iters = 10000;
% 训练神经网络
for i=1:num_iters
% 前向传播
a1 = [ones(size(X,1),1) X];
z2 = a1 * Theta1';
a2 = sigmoid(z2);
a2 = [ones(size(a2,1),1) a2];
z3 = a2 * Theta2';
a3 = sigmoid(z3);
% 计算误差
delta3 = a3 - y;
delta2 = delta3 * Theta2 .* sigmoidGradient([ones(size(z2,1),1) z2]);
delta2 = delta2(:,2:end);
% 计算梯度
Theta2_grad = delta3' * a2;
Theta1_grad = delta2' * a1;
% 更新权重
Theta1 = Theta1 - alpha * Theta1_grad;
Theta2 = Theta2 - alpha * Theta2_grad;
end
% 预测结果
a1 = [ones(size(X,1),1) X];
z2 = a1 * Theta1';
a2 = sigmoid(z2);
a2 = [ones(size(a2,1),1) a2];
z3 = a2 * Theta2';
a3 = sigmoid(z3);
predictions = a3 > 0.5;
```
需要注意的是,这个例子中使用的是一个简单的 XOR 数据集。如果要使用神经网络解决其他问题,需要根据具体情况调整参数和网络结构。