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

pytorch下对各种超参调整效果

#GPU训练
import torch
from torch import nn
import torchvision
from torch.utils.tensorboard import SummaryWriter
from torch.utils.data import DataLoader#1.准备训练数据 测试数据
train_data = torchvision.datasets.CIFAR10(root="./",train=True,transform=torchvision.transforms.ToTensor(),download=True
)
test_data = torchvision.datasets.CIFAR10(root="./",train=False,transform=torchvision.transforms.ToTensor(),download=True
)
train_size = len(train_data)
test_size = len(test_data)
#加载数据集
train_dataloader = DataLoader(train_data, batch_size=64)
test_dataloader = DataLoader(test_data, batch_size=64)#2.创建神经网络
class Tudui(nn.Module):def __init__(self):super(Tudui, self).__init__()self.model = nn.Sequential(nn.Conv2d(3, 32, 5, 1, 2),nn.MaxPool2d(2),nn.Conv2d(32, 32, 5, 1, 2),nn.MaxPool2d(2),nn.Conv2d(32, 64, 5, 1, 2),nn.MaxPool2d(2),nn.Flatten(),nn.Linear(64*4*4, 64),nn.Linear(64, 10))def forward(self, x):x = self.model(x)return x#3.实例化模型
tudui = Tudui()
if torch.cuda.is_available():tudui = tudui.cuda()print("GPU训练")
else:print("CPU训练")#4.损失函数与优化器
loss_fn = nn.CrossEntropyLoss()
if torch.cuda.is_available():loss_fn = loss_fn.cuda()
learning_rate = 1e-2
optimizer = torch.optim.SGD(tudui.parameters(), lr= learning_rate)#5.训练与测试
epoch = 10
for i in range(epoch):acy = 0total_loss = 0tudui.train()for data in train_dataloader:imgs, targets = dataif torch.cuda.is_available():imgs, targets = imgs.cuda(), targets.cuda()outputs = tudui(imgs)acy_t = (outputs.argmax(1) == targets).sum()acy += acy_tloss = loss_fn(outputs, targets)optimizer.zero_grad()loss.backward()optimizer.step()total_loss+=loss.item()print("训练epoch:{}, loss:{} acy:{}".format(i+1, total_loss, acy/train_size))#6.测试
accuracy = 0
tudui.eval()
with torch.no_grad():for data in test_dataloader:imgs, targets = dataif torch.cuda.is_available():imgs, targets = imgs.cuda(), targets.cuda()outputs = tudui(imgs)accuracy_t = (outputs.argmax(1) == targets).sum()accuracy += accuracy_t
print("测试集合的正确率为:{}".format(accuracy/test_size))

以上代码,训练结果如下:在这里插入图片描述

加入了归一化:
在这里插入图片描述
加入激活函数:
在这里插入图片描述

dropout()在各种参数下:

0.1
训练epoch:10, loss:391.0225857049227 acy:0.8289600014686584
测试集合的正确率为:0.70279997587203980.2
训练epoch:10, loss:439.34341555833817 acy:0.8060199618339539
测试集合的正确率为:0.67189997434616090.3
训练epoch:10, loss:478.8938387930393 acy:0.7883599996566772
测试集合的正确率为:0.6529999971389770.4
训练epoch:10, loss:537.8044945299625 acy:0.7644599676132202
测试集合的正确率为:0.71230000257492070.5
训练epoch:10, loss:594.5000147819519 acy:0.7396399974822998
测试集合的正确率为:0.67759996652603150.8
训练epoch:10, loss:904.8575140833855 acy:0.5776599645614624
测试集合的正确率为:0.538599967956543

以下也是0.4时:
在这里插入图片描述

优化器SGD()改为Adm():
在这里插入图片描述

学习率从0.01改为0.001,改变不大
在这里插入图片描述
Batch_size从64到128

在这里插入图片描述
修改了以上各种参数的代码:

#GPU训练
import torch
from torch import nn
import torchvision
from torch.utils.tensorboard import SummaryWriter
from torch.utils.data import DataLoader#1.准备训练数据 测试数据
train_data = torchvision.datasets.CIFAR10(root="./",train=True,transform=torchvision.transforms.ToTensor(),download=True
)
test_data = torchvision.datasets.CIFAR10(root="./",train=False,transform=torchvision.transforms.ToTensor(),download=True
)
train_size = len(train_data)
test_size = len(test_data)
#加载数据集
train_dataloader = DataLoader(train_data, batch_size=128, shuffle=True)
test_dataloader = DataLoader(test_data, batch_size=128, shuffle=False)#2.创建神经网络
class Tudui(nn.Module):def __init__(self):super(Tudui, self).__init__()self.model = nn.Sequential(nn.Conv2d(3, 32, 5, 1, 2),nn.BatchNorm2d(32),nn.ReLU(),nn.MaxPool2d(2),nn.Conv2d(32, 32, 5, 1, 2),nn.BatchNorm2d(32),nn.ReLU(),nn.MaxPool2d(2),nn.Conv2d(32, 64, 5, 1, 2),nn.BatchNorm2d(64),nn.ReLU(),nn.MaxPool2d(2),nn.Flatten(),nn.Linear(64*4*4, 64),nn.BatchNorm1d(64),nn.ReLU(),nn.Dropout(0.4),nn.Linear(64, 10))def forward(self, x):x = self.model(x)return x#3.实例化模型
tudui = Tudui()
if torch.cuda.is_available():tudui = tudui.cuda()print("GPU训练")
else:print("CPU训练")#4.损失函数与优化器
loss_fn = nn.CrossEntropyLoss()
if torch.cuda.is_available():loss_fn = loss_fn.cuda()
learning_rate = 1e-3
optimizer = torch.optim.Adam(tudui.parameters(), lr= learning_rate)#5.训练与测试
epoch = 10
for i in range(epoch):acy = 0total_loss = 0tudui.train()for data in train_dataloader:imgs, targets = dataif torch.cuda.is_available():imgs, targets = imgs.cuda(), targets.cuda()outputs = tudui(imgs)acy_t = (outputs.argmax(1) == targets).sum()acy += acy_tloss = loss_fn(outputs, targets)print("this batch of loss:{}".format(loss.item()))optimizer.zero_grad()loss.backward()optimizer.step()total_loss+=loss.item()print("训练epoch:{}, loss:{} acy:{}".format(i+1, total_loss, acy/train_size))#6.测试
accuracy = 0
tudui.eval()
with torch.no_grad():for data in test_dataloader:imgs, targets = dataif torch.cuda.is_available():imgs, targets = imgs.cuda(), targets.cuda()outputs = tudui(imgs)accuracy_t = (outputs.argmax(1) == targets).sum()accuracy += accuracy_t
print("测试集合的正确率为:{}".format(accuracy/test_size))
http://www.dtcms.com/a/524988.html

相关文章:

  • 做网站会遇到的问题title 镇江网站建设
  • 怎么做网站底部版权信息在哪可以接企业网站建设的活
  • 聊城网站建设服务好赣州网站制作较好的公司
  • 今日行情明日机会——20251024
  • pip常用命令
  • 杂志网站建设推广方案好的设计作品网站
  • 多语言外贸网站开发wordpress 谷歌地图
  • 简单的电商网站开发网站建设的本质
  • 建行官方网站首页黄页网络的推广
  • 【力扣Hot100】刷题日记
  • IROS 2025现场,触觉力反馈、数据手套遥操作机器人灵巧手平台系统解决方案
  • vivo官方网站进入短视频推广计划
  • 绵阳网站seo网站建设小结
  • 深圳个性化网站建设公司电话做评测好的视频网站
  • N8周打卡:使用Word2vec实现文本分类
  • 开发日记-10-24
  • 如何使用 Python 自动调整 Excel 行高和列宽
  • 私人定制网站装修公司排行榜十大排名
  • 网站建设好后打开是目录文件河北省建筑信息平台
  • 分红盘网站开发多少钱怎么做网站上做电子书
  • 网站后台的网址忘记了房天下搜房网官网
  • 碳中和时代:新能源汽车热管理技术新趋势
  • 爬虫逆向之X音a_bogus参数分析
  • Tigshop开源商城系统 JAVA v5.6.0 版本已发布
  • 自己可以申请网站做外卖吗竞价广告推广
  • 做淘宝联盟网站要多少钱?权威的网站建设
  • 专门做钻石国外网站做精酿啤酒购买的网站
  • 【JUC】Future + CompletableFuture详解
  • 高端的食品行业网站开发上海网络开发公司
  • 建设网站书籍pdf下载东莞网站建设是什么意思