基于pytorch写一段线性分类器的代码
以下是基于PyTorch实现的线性分类器代码:
import torch
import torch.nn as nn
import torch.optim as optim
# 定义线性分类器模型
class LinearClassifier(nn.Module):
def __init__(self, input_dim, output_dim):
super(LinearClassifier, self).__init__()
self.linear = nn.Linear(input_dim, output_dim)
def forward(self, x):
out = self.linear(x)
return out
# 定义训练函数
def train(model, train_loader, criterion, optimizer, epochs):
for epoch in range(epochs):
for i, (inputs, labels) in enumerate(train_loader):
optimizer.zero_grad()
outputs = model(inputs)
loss = criterion(outputs, labels)
loss.backward()
optimizer.step()
if (i+1) % 100 == 0:
print ('Epoch [{}/{}], Step [{}/{}], Loss: {:.4f}'.format(epoch+1, epochs, i+1, len(train_loader), loss.item()))
# 定义测试函数
def test(model, test_loader):
with torch.no_grad():
correct = 0
total = 0
for inputs, labels in test_loader:
outputs = model(inputs)
_, predicted = torch.max(outputs.data, 1)
total += labels.size(0)
correct += (predicted == labels).sum().item()
accuracy = 100 * correct / total
print('Accuracy of the model on the test images: {} %'.format(accuracy))
# 加载数据
train_data = # 加载训练数据
test_data = # 加载测试数据
train_loader = torch.utils.data.DataLoader(train_data, batch_size=64, shuffle=True)
test_loader = torch.utils.data.DataLoader(test_data, batch_size=64, shuffle=False)
# 定义模型、损失函数和优化器
model = LinearClassifier(input_dim=784, output_dim=10)
criterion = nn.CrossEntropyLoss()
optimizer = optim.SGD(model.parameters(), lr=0.01)
# 训练模型并测试
train(model, train_loader, criterion, optimizer, epochs=5)
test(model, test_loader)
其中,LinearClassifier类定义了一个简单的线性分类器模型,train函数用于训练模型,test函数用于测试模型。在主函数中,我们加载数据、定义模型、损失函数和优化器,然后训练模型并测试。注:该代码仅供参考,具体实现需要根据实际情况进行修改
原文地址: https://www.cveoy.top/t/topic/faKM 著作权归作者所有。请勿转载和采集!