三层bp神经网络matlab代码
时间: 2024-06-11 10:02:22 浏览: 177
三层BP神经网络是一种常见的人工神经网络模型,由输入层、隐藏层和输出层组成。它可以用于分类、回归等问题。
以下是一个简单的三层BP神经网络的Matlab代码示例:
```matlab
% 设置输入和输出数据
inputData = [0.1 0.2 0.3; 0.4 0.5 0.6];
outputData = [0.7 0.8; 0.9 1.0];
% 设置神经网络参数
inputNum = size(inputData, 1); % 输入层节点数
hiddenNum = 4; % 隐藏层节点数
outputNum = size(outputData, 1); % 输出层节点数
epochNum = 10000; % 训练轮数
learningRate = 0.01; % 学习率
% 初始化权重和偏置
inputHiddenWeight = rand(hiddenNum, inputNum); % 输入层到隐藏层的权重
hiddenOutputWeight = rand(outputNum, hiddenNum); % 隐藏层到输出层的权重
inputHiddenBias = rand(hiddenNum, 1); % 输入层到隐藏层的偏置
hiddenOutputBias = rand(outputNum, 1); % 隐藏层到输出层的偏置
% 训练神经网络
for epoch = 1:epochNum
% 前向传播计算输出结果
hiddenOutput = sigmoid(inputHiddenWeight * inputData + inputHiddenBias);
networkOutput = sigmoid(hiddenOutputWeight * hiddenOutput + hiddenOutputBias);
% 计算误差
outputError = outputData - networkOutput;
hiddenError = hiddenOutputWeight' * outputError .* sigmoidGradient(hiddenOutput);
% 更新权重和偏置
hiddenOutputWeight = hiddenOutputWeight + learningRate * outputError * hiddenOutput';
inputHiddenWeight = inputHiddenWeight + learningRate * hiddenError * inputData';
hiddenOutputBias = hiddenOutputBias + learningRate * outputError;
inputHiddenBias = inputHiddenBias + learningRate * hiddenError;
end
% 预测新数据
newData = [0.7 0.8 0.9; 0.2 0.3 0.4];
hiddenOutput = sigmoid(inputHiddenWeight * newData + inputHiddenBias);
networkOutput = sigmoid(hiddenOutputWeight * hiddenOutput + hiddenOutputBias);
disp(networkOutput); % 输出预测结果
```
其中,`sigmoid`函数是激活函数,用于将神经元的加权和转换为输出值。`sigmoidGradient`函数是`sigmoid`函数的导数,用于计算误差。
阅读全文