建立bp神经网络 sigmoid matlab 代码
时间: 2023-07-22 13:39:47 浏览: 89
以下是在 MATLAB 中建立一个基本的 BP 神经网络的代码,其中使用 sigmoid 作为激活函数:
```matlab
% 设置输入和目标数据
input_data = [0 0; 0 1; 1 0; 1 1]';
target_data = [0 1 1 0];
% 设置网络结构和学习参数
num_inputs = size(input_data, 1);
num_hidden = 4;
num_outputs = 1;
learning_rate = 0.1;
num_epochs = 10000;
% 初始化权重和偏置
w1 = randn(num_hidden, num_inputs);
b1 = randn(num_hidden, 1);
w2 = randn(num_outputs, num_hidden);
b2 = randn(num_outputs, 1);
% 训练网络
for epoch = 1:num_epochs
% 前向传播
hidden_input = w1 * input_data + b1;
hidden_output = sigmoid(hidden_input);
output_input = w2 * hidden_output + b2;
output = sigmoid(output_input);
% 计算误差和梯度
error = target_data - output;
d_output = output .* (1 - output) .* error;
d_hidden = hidden_output .* (1 - hidden_output) .* (w2' * d_output);
% 更新权重和偏置
w2 = w2 + learning_rate * d_output * hidden_output';
b2 = b2 + learning_rate * d_output;
w1 = w1 + learning_rate * d_hidden * input_data';
b1 = b1 + learning_rate * d_hidden;
end
% 使用训练好的网络进行预测
test_data = [0.5 0.5; 0.2 0.8; 0.9 0.1]';
hidden_input = w1 * test_data + b1;
hidden_output = sigmoid(hidden_input);
output_input = w2 * hidden_output + b2;
output = sigmoid(output_input);
disp(output);
```
需要注意的是,此代码只是一个简单的示例,实际应用中需要根据具体问题进行调整和优化。
阅读全文