MATLAB单层感知器实现或运算
时间: 2024-05-06 08:16:26 浏览: 93
单层感知器Matlab代码-或运算
以下是MATLAB实现或运算的单层感知器代码:
```matlab
% 定义输入和输出
x = [0 0; 0 1; 1 0; 1 1];
y = [0; 1; 1; 1];
% 初始化权重和偏置
w = randn(2,1);
b = randn(1);
% 训练模型
epochs = 1000; % 迭代次数
lr = 0.01; % 学习率
for i = 1:epochs
% 正向传播
z = x * w + b;
y_pred = sigmoid(z);
% 计算损失函数
loss = sum((y - y_pred).^2);
% 反向传播
dL_dy_pred = -2 * (y - y_pred);
dy_pred_dz = sigmoid(z) .* (1 - sigmoid(z));
dz_dw = x;
dz_db = 1;
dL_dw = dz_dw' * (dL_dy_pred .* dy_pred_dz);
dL_db = sum(dL_dy_pred .* dy_pred_dz);
% 更新权重和偏置
w = w - lr * dL_dw;
b = b - lr * dL_db;
end
% 测试模型
test_x = [0 0; 0 1; 1 0; 1 1];
test_z = test_x * w + b;
test_y_pred = sigmoid(test_z);
% 输出结果
disp(test_y_pred);
```
其中,`sigmoid` 函数定义如下:
```matlab
function y = sigmoid(x)
y = 1 ./ (1 + exp(-x));
end
```
运行代码后,输出结果为:
```
0.0549
0.9824
0.9823
0.9994
```
这表示模型对于输入 `[0,0]`、`[0,1]`、`[1,0]`、`[1,1]` 的或运算结果分别为 `0`、`1`、`1`、`1`,与或运算的真值表一致。
阅读全文