神经网络 Matlab代码
时间: 2023-07-08 13:19:34 浏览: 39
以下是一个简单的三层神经网络的 Matlab 代码示例:
```matlab
% 初始化输入数据
X = [0 0 1; 0 1 1; 1 0 1; 1 1 1];
% 初始化输出数据
y = [0 0 1 1]';
% 初始化权重矩阵
W1 = rand(3, 4);
W2 = rand(4, 1);
% 设置学习率
alpha = 0.01;
% 迭代次数
epochs = 5000;
% 开始训练
for i = 1:epochs
% 前向传播
z1 = X * W1;
a1 = sigmoid(z1);
z2 = a1 * W2;
y_pred = sigmoid(z2);
% 计算损失函数
loss = sum((y - y_pred).^2);
% 反向传播
delta2 = (y_pred - y) .* sigmoid_derivative(z2);
dW2 = a1' * delta2;
delta1 = (delta2 * W2') .* sigmoid_derivative(z1);
dW1 = X' * delta1;
% 更新权重矩阵
W1 = W1 - alpha * dW1;
W2 = W2 - alpha * dW2;
% 打印损失函数值
if mod(i, 1000) == 0
fprintf('Epoch %d, loss: %f\n', i, loss);
end
end
% 预测新数据
X_new = [1 1 0];
z1 = X_new * W1;
a1 = sigmoid(z1);
z2 = a1 * W2;
y_pred = sigmoid(z2);
fprintf('Prediction for [%d %d %d]: %f\n', X_new(1), X_new(2), X_new(3), y_pred);
```
其中,`sigmoid` 函数和 `sigmoid_derivative` 函数分别为 sigmoid 激活函数及其导数。