当前位置: 首页 > news >正文

如何使用.pth训练模型

一.使用.pth训练模型的步骤如下:

1.导入必要的库和模型

import torch
import torchvision.models as models# 加载预训练模型
model = models.resnet50(pretrained=True)

2.定义数据集和数据加载器

# 定义数据集和数据加载器
dataset = MyDataset()
dataloader = torch.utils.data.DataLoader(dataset, batch_size=32, shuffle=True)

3.定义损失函数和优化器

# 定义损失函数和优化器
criterion = torch.nn.CrossEntropyLoss()
optimizer = torch.optim.SGD(model.parameters(), lr=0.001, momentum=0.9)

4.训练模型

# 训练模型
for epoch in range(10):running_loss = 0.0for i, data in enumerate(dataloader, 0):inputs, labels = dataoptimizer.zero_grad()outputs = model(inputs)loss = criterion(outputs, labels)loss.backward()optimizer.step()running_loss += loss.item()if i % 2000 == 1999:print('[%d, %5d] loss: %.3f' %(epoch + 1, i + 1, running_loss / 2000))running_loss = 0.0

5.保存模型

# 保存模型
torch.save(model.state_dict(), 'model.pth')

二,使用自己训练的.pth模型进行训练的步骤如下:

1.导入必要的库和模型

import torch
import torchvision
from torchvision import transforms
from torch.utils.data import DataLoader
from my_dataset import MyDataset # 自定义数据集
from my_model import MyModel # 自定义模型

2.设置超参数和路径

batch_size = 32 # 批大小
num_epochs = 10 # 训练轮数
learning_rate = 0.001 # 学习率
device = torch.device('cuda' if torch.cuda.is_available() else 'cpu') # 设置设备
train_data_path = 'train_data/' # 训练数据集路径
test_data_path = 'test_data/' # 测试数据集路径
model_path = 'my_model.pth' # 模型保存路径

3.加载数据集

train_transforms = transforms.Compose([transforms.Resize((224, 224)), # 调整图像大小transforms.RandomHorizontalFlip(), # 随机水平翻转transforms.ToTensor(), # 转换为张量transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225]) # 标准化
])test_transforms = transforms.Compose([transforms.Resize((224, 224)),transforms.ToTensor(),transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225])
])train_dataset = MyDataset(train_data_path, train_transforms) # 自定义数据集
test_dataset = MyDataset(test_data_path, test_transforms)train_loader = DataLoader(train_dataset, batch_size=batch_size, shuffle=True) # 训练集加载器
test_loader = DataLoader(test_dataset, batch_size=batch_size, shuffle=False) # 测试集加载器

4.加载模型

model = MyModel() # 自定义模型
model.load_state_dict(torch.load(model_path)) # 加载.pth模型
model.to(device) # 将模型移动到设备上

5.定义损失函数和优化器

criterion = torch.nn.CrossEntropyLoss() # 交叉熵损失函数
optimizer = torch.optim.Adam(model.parameters(), lr=learning_rate) # Adam优化器

6.训练模型

total_step = len(train_loader)
for epoch in range(num_epochs):for i, (images, labels) in enumerate(train_loader):images = images.to(device)labels = labels.to(device)outputs = model(images)loss = criterion(outputs, labels)optimizer.zero_grad()loss.backward()optimizer.step()if (i+1) % 100 == 0:print('Epoch [{}/{}], Step [{}/{}], Loss: {:.4f}'.format(epoch+1, num_epochs, i+1, total_step, loss.item()))torch.save(model.state_dict(), 'fine_tuned_model.pth') # 保存.pth模型

7.测试模型

model.eval() # 切换到评估模式
with torch.no_grad():correct = 0total = 0for images, labels in test_loader:images = images.to(device)labels = labels.to(device)outputs = model(images)_, predicted = torch.max(outputs.data, 1)total += labels.size(0)correct += (predicted == labels).sum().item()print('Accuracy of the network on the test images: {} %'.format(100 * correct / total))

http://www.lryc.cn/news/246143.html

相关文章:

  • C++11线程以及线程同步
  • 深度学习之基于YoloV3杂草识别系统
  • Linux 命令vim(编辑器)
  • 轻松配置PPPoE连接:路由器设置和步骤详解
  • 电源控制系统架构(PCSA)之系统分区电源域
  • Linux:docker基础操作(3)
  • 【Axure教程】用中继器制作卡片多条件搜索效果
  • Linux中vi常用命令-批量替换
  • logback-spring.xml的内容格式
  • nodejs+vue+elementui+express青少年编程课程在线考试系统
  • Navicat 技术指引 | GaussDB 数据查看器
  • Docker的registry
  • 【vue_3】关于超链接的问题
  • redis优化秒杀和消息队列
  • arm-eabi-gcc 和 arm-none-eabi-gcc 都是基于 GCC 的交叉编译器
  • 《大话设计模式》(持续更新中)
  • 人工智能原理复习--绪论
  • [网络] 字节一面~ 2. HTTP 2 与 HTTP 1.x 有什么区别
  • 自己动手实现一个深度学习算法——八、深度学习
  • js闭包的必要条件及创建和消失(生命周期)
  • 鸿蒙开发-ArkTS 语言-基础语法
  • GPT实战系列-GPT训练的Pretraining,SFT,Reward Modeling,RLHF
  • 电子学会C/C++编程等级考试2022年03月(三级)真题解析
  • 理解 JUnit, JaCoCo 到 SonarQube 的过程及 Maven 配置
  • 人工智能关键技术决定机器人产业的前途
  • 2023华为ICT网络初赛试题回顾
  • Hands-on Machine Learning with Scikit-Learn,Keras TensorFlow
  • 242. 有效的字母异位词
  • TUP通信——与多个客户端同时通信
  • 基于helm的方式在k8s集群中部署gitlab - 备份恢复(二)