bp神经网络matlab实例
时间: 2023-06-18 10:04:12 浏览: 66
以下是一个简单的BP神经网络的MATLAB实现示例:
```matlab
% 训练集
X = [0 0 1 1; 0 1 0 1];
Y = [0 1 1 0];
% 初始化
inputSize = 2;
hiddenSize = 2;
outputSize = 1;
W1 = randn(hiddenSize, inputSize);
b1 = randn(hiddenSize, 1);
W2 = randn(outputSize, hiddenSize);
b2 = randn(outputSize, 1);
% 训练参数
learningRate = 0.1;
numIterations = 10000;
% 训练
for i = 1:numIterations
% 正向传播
Z1 = W1*X + b1;
A1 = sigmoid(Z1);
Z2 = W2*A1 + b2;
A2 = sigmoid(Z2);
% 反向传播
dZ2 = A2 - Y;
dW2 = 1/size(X,2) * dZ2 * A1';
db2 = 1/size(X,2) * sum(dZ2, 2);
dZ1 = W2' * dZ2 .* sigmoidGradient(Z1);
dW1 = 1/size(X,2) * dZ1 * X';
db1 = 1/size(X,2) * sum(dZ1, 2);
% 参数更新
W2 = W2 - learningRate*dW2;
b2 = b2 - learningRate*db2;
W1 = W1 - learningRate*dW1;
b1 = b1 - learningRate*db1;
end
% 预测
X_test = [1 1 0 0; 1 0 1 0];
Z1 = W1*X_test + b1;
A1 = sigmoid(Z1);
Z2 = W2*A1 + b2;
A2 = sigmoid(Z2);
disp(A2);
```
在该示例中,我们使用了一个包含两个隐藏层神经元和一个输出层神经元的神经网络,用于解决XOR问题。我们使用sigmoid函数作为激活函数,使用交叉熵作为损失函数。在训练过程中,我们使用随机梯度下降算法更新网络参数。最后,我们用训练好的模型进行预测并输出结果。