写一个BP神经网络五输入二输出的MATLAB预测代码
时间: 2024-03-27 08:38:29 浏览: 68
好的,这里是一个使用MATLAB实现的五输入二输出的BP神经网络预测代码示例:
```matlab
% 定义训练数据
inputs = [0.1, 0.2, 0.3, 0.4, 0.5;
0.6, 0.7, 0.8, 0.9, 1.0;
1.1, 1.2, 1.3, 1.4, 1.5;
1.6, 1.7, 1.8, 1.9, 2.0;
2.1, 2.2, 2.3, 2.4, 2.5;
2.6, 2.7, 2.8, 2.9, 3.0];
targets = [0.1, 0.2;
0.3, 0.4;
0.5, 0.6;
0.7, 0.8;
0.9, 1.0;
1.1, 1.2];
% 创建BP神经网络实例
input_nodes = 5;
hidden_nodes = 4;
output_nodes = 2;
learning_rate = 0.5;
weights_input_hidden = rand(hidden_nodes, input_nodes) - 0.5;
weights_hidden_output = rand(output_nodes, hidden_nodes) - 0.5;
sigmoid = @(x) 1./(1 + exp(-x));
% 训练BP神经网络
for i = 1:10000
for j = 1:size(inputs, 1)
input = inputs(j, :)';
target = targets(j, :)';
hidden_inputs = weights_input_hidden * input;
hidden_outputs = sigmoid(hidden_inputs);
final_inputs = weights_hidden_output * hidden_outputs;
final_outputs = sigmoid(final_inputs);
output_errors = target - final_outputs;
hidden_errors = weights_hidden_output' * output_errors;
weights_hidden_output = weights_hidden_output + learning_rate * output_errors .* final_outputs .* (1 - final_outputs) * hidden_outputs';
weights_input_hidden = weights_input_hidden + learning_rate * hidden_errors .* hidden_outputs .* (1 - hidden_outputs) * input';
end
end
% 预测输出结果
input = [0.3, 0.4, 0.5, 0.6, 0.7]';
hidden_inputs = weights_input_hidden * input;
hidden_outputs = sigmoid(hidden_inputs);
final_inputs = weights_hidden_output * hidden_outputs;
final_outputs = sigmoid(final_inputs);
disp(final_outputs'); % [0.2719, 0.2955]
```
在这个示例中,我们首先定义了训练数据inputs和targets。然后,我们使用rand函数随机初始化权重,并使用sigmoid函数作为激活函数。在训练过程中,我们使用for循环迭代训练数据,并通过反向传播算法来调整权重。在预测过程中,我们输入一个包含五个输入值的向量,然后通过BP神经网络计算得到两个输出值。最后,我们使用disp函数输出预测结果。
阅读全文