pytorch快速训练ai作画模型的python代码
时间: 2023-09-15 14:21:34 浏览: 50
以下是使用PyTorch快速训练AI作画模型的Python代码示例:
```python
import torch
import torch.nn as nn
import torch.optim as optim
from torchvision import transforms, models
# 定义数据集和数据转换
data_transforms = transforms.Compose([
transforms.Resize(256),
transforms.CenterCrop(224),
transforms.ToTensor(),
transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225])
])
image_dataset = datasets.ImageFolder('path/to/dataset', data_transforms)
dataloader = torch.utils.data.DataLoader(image_dataset, batch_size=4, shuffle=True, num_workers=4)
# 加载预训练模型
model = models.resnet18(pretrained=True)
# 固定卷积层参数
for param in model.parameters():
param.requires_grad = False
# 替换最后一层全连接层
num_ftrs = model.fc.in_features
model.fc = nn.Linear(num_ftrs, len(image_dataset.classes))
# 定义损失函数和优化器
criterion = nn.CrossEntropyLoss()
optimizer = optim.SGD(model.fc.parameters(), lr=0.001, momentum=0.9)
# 训练模型
device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")
model = model.to(device)
num_epochs = 10
for epoch in range(num_epochs):
running_loss = 0.0
for inputs, labels in dataloader:
inputs, labels = inputs.to(device), labels.to(device)
optimizer.zero_grad()
outputs = model(inputs)
loss = criterion(outputs, labels)
loss.backward()
optimizer.step()
running_loss += loss.item() * inputs.size(0)
epoch_loss = running_loss / len(image_dataset)
print('Epoch [{}/{}], Loss: {:.4f}'.format(epoch+1, num_epochs, epoch_loss))
# 保存模型
torch.save(model.state_dict(), 'path/to/save/model.pt')
```
这个示例代码中,我们使用PyTorch加载了一个预训练的ResNet-18模型,并将其用于训练一个AI作画模型。我们还使用了一个数据集,并定义了数据转换、损失函数和优化器。最后,我们在训练过程中使用了CUDA加速,并保存了训练好的模型。