matlab实现BP神经网络
时间: 2023-10-13 18:07:20 浏览: 43
以下是一个简单的BP神经网络的MATLAB实现示例:
% 定义输入数据
X = [0 0;0 1;1 0;1 1];
Y = [0;1;1;0];
% 设置网络结构
input_nodes = size(X,2); % 输入层节点数
hidden_nodes = 4; % 隐藏层节点数
output_nodes = 1; % 输出层节点数
% 初始化权重矩阵
W1 = 2*rand(input_nodes, hidden_nodes) - 1; % 输入层到隐藏层的权重矩阵
W2 = 2*rand(hidden_nodes, output_nodes) - 1; % 隐藏层到输出层的权重矩阵
% 训练网络
learning_rate = 0.1; % 学习率
epoch = 10000; % 迭代次数
for i = 1:epoch
% 前向传播
H = sigmoid(X*W1); % 隐藏层输出
Y_pred = sigmoid(H*W2); % 输出层输出
% 计算误差
error = Y - Y_pred;
% 反向传播
delta_output = error .* sigmoid_derivative(Y_pred); % 输出层误差
delta_hidden = (delta_output * W2') .* sigmoid_derivative(H); % 隐藏层误差
% 更新权重矩阵
W2 = W2 + learning_rate * H' * delta_output; % 更新隐藏层到输出层的权重矩阵
W1 = W1 + learning_rate * X' * delta_hidden; % 更新输入层到隐藏层的权重矩阵
end
% 预测结果
Y_pred = sigmoid(sigmoid(X*W1)*W2);
disp(Y_pred);
% 定义sigmoid函数及其导数
function y = sigmoid(x)
y = 1./(1+exp(-x));
end
function y = sigmoid_derivative(x)
y = sigmoid(x).*(1-sigmoid(x));
end