多层感知机实现二分类代码
时间: 2023-10-26 13:22:29 浏览: 109
以下是一个简单的多层感知机实现二分类的代码示例,使用 PyTorch 框架:
```python
import torch
import torch.nn as nn
import torch.optim as optim
# 定义多层感知机模型
class MLP(nn.Module):
def __init__(self, input_size, hidden_size, output_size):
super(MLP, self).__init__()
self.fc1 = nn.Linear(input_size, hidden_size)
self.relu = nn.ReLU()
self.fc2 = nn.Linear(hidden_size, output_size)
self.sigmoid = nn.Sigmoid()
def forward(self, x):
x = self.fc1(x)
x = self.relu(x)
x = self.fc2(x)
x = self.sigmoid(x)
return x
# 准备训练数据
x_train = torch.tensor([[0.0, 0.0], [0.0, 1.0], [1.0, 0.0], [1.0, 1.0]])
y_train = torch.tensor([[0.0], [1.0], [1.0], [0.0]])
# 定义模型参数
input_size = 2
hidden_size = 4
output_size = 1
lr = 0.1
epochs = 1000
# 初始化模型和优化器
model = MLP(input_size, hidden_size, output_size)
optimizer = optim.SGD(model.parameters(), lr=lr)
# 训练模型
for epoch in range(epochs):
# 前向传播
y_pred = model(x_train)
# 计算损失
loss_fn = nn.MSELoss()
loss = loss_fn(y_pred, y_train)
# 反向传播
optimizer.zero_grad()
loss.backward()
optimizer.step()
# 每 100 步输出一次损失
if epoch % 100 == 0:
print("Epoch {}, Loss {}".format(epoch, loss.item()))
# 测试模型
x_test = torch.tensor([[0.0, 0.0], [0.0, 1.0], [1.0, 0.0], [1.0, 1.0]])
y_test = model(x_test)
print(y_test)
```
上述代码实现了一个包含一个隐藏层的多层感知机模型,使用均方误差作为损失函数,使用随机梯度下降算法进行优化。训练完毕后,对模型进行测试并输出预测结果。
阅读全文