import torch
import torch.nn as nn
import torch.optim as optim
class MLPModel(nn.Module):
def __init__(self, input_size):
super(MLPModel, self).__init__()
self.fc1 = nn.Linear(input_size, 128)
self.fc2 = nn.Linear(128, 64)
self.fc3 = nn.Linear(64, 2)
self.sigmoid = nn.Sigmoid()
def forward(self, x):
x = torch.relu(self.fc1(x))
x = torch.relu(self.fc2(x))
x = self.fc3(x).float()
x = self.sigmoid(x)
return x
# 创建模型
input_size = # 你的输入大小
model = MLPModel(input_size)
# 定义损失函数和优化器
criterion = nn.BCELoss() # 二分类交叉熵损失函数适用于Sigmoid输出
optimizer = optim.Adam(model.parameters(), lr=0.001) # Adam优化器,可以根据需要调整学习率
# 训练循环
num_epochs = 10 # 你可以根据需要调整训练的轮数
for epoch in range(num_epochs):
# 训练模式
model.train()
# 假设你有训练数据 DataLoader,可以使用迭代器逐批次提供数据
for inputs, labels in train_dataloader:
# 清零梯度
optimizer.zero_grad()
# 前向传播
outputs = model(inputs)
# 计算损失
loss = criterion(outputs, labels)
# 反向传播
loss.backward()
# 优化步骤
optimizer.step()
# 打印每个epoch的损失
print(f'Epoch [{epoch+1}/{num_epochs}], Loss: {loss.item()}')
# 训练完成后,你可以保存模型或者用于测试和推理