Pytorch深度学习-完整的模型训练套路(小土堆)

  • 训练基础步骤
import torch  
import torchvision.datasets  
from torch.utils.data import DataLoader  
from torch.utils.tensorboard import SummaryWriter  
  
from model import *  
  
  
#准备训练数据集  
train_data = torchvision.datasets.CIFAR10(root="./data",train=True,transform=torchvision.transforms.ToTensor(),download=True)  
  
#准备测试数据集  
test_data = torchvision.datasets.CIFAR10(root="./data",train=False,transform=torchvision.transforms.ToTensor(),download=True)  
  
#获取数据集长度  
train_data_size = len(train_data)  
test_data_size = len(test_data)  
  
#输出长度:格式化字符串  
print("训练集长度:{}".format(train_data_size))#50000  
print("测试集长度:{}".format(test_data_size))#10000  
  
#加载数据集  
train_dataLoader = DataLoader(train_data,batch_size=64)  
test_dataLoader = DataLoader(test_data,batch_size=64)  
  
#加载神经网络  
test = seq()  
  
#损失函数  
loss_fun = nn.CrossEntropyLoss()  
  
#优化器  
optimizer = torch.optim.SGD(test.parameters(),lr = 0.01)  
  
#设置训练网络的一些参数  
#记录训练次数  
total_train_step = 0  
#记录测试次数  
total_test_step = 0  
#训练的轮数  
epoch = 10  
  
#添加tensorboard  
writer = SummaryWriter("logs_train")  
  
for i in range(epoch):  
    print("----------第{}轮训练开始----------".format(i+1))  
    #训练  
    for data in train_dataLoader:  
        imgs , target = data  
        #返回训练结果  
        outputs = test(imgs)  
        #测试训练结果与真实值的误差  
        loss = loss_fun(outputs,target)  
  
        #优化  
        #梯度清零  
        optimizer.zero_grad()  
        #获得损失反向传播  
        loss.backward()  
        #调入优化器  
        optimizer.step()  
        total_train_step += 1  
        if total_train_step % 100 == 0:  
            print("训练次数:{},loss为:{}".format(total_train_step,loss))  
            #记录  
            writer.add_scalar("train_loss",loss.item(),total_train_step)  
  
  
    #进行测试,看模型是否测试完成  
    total_test_loss = 0  
    #计算正确率  
    total_accuracy = 0  
    #没有梯度,也就是不需要在调优,因为是对现有训练模型是否达标进行测试  
    with torch.no_grad():  
        for data in test_dataLoader:  
            imgs,targets = data  
            #查看输出结果  
            outputs = test(imgs)  
            #获取测试集训练结果与真实值的误差  
            loss = loss_fun(outputs,targets)  
            total_test_loss += loss.item()  
            #横向比较  
            accuracy = (outputs.argmax(1) == targets).sum()  
    print("整体测试集上的Loss:{}".format(total_test_loss))  
    print("整体测试集上的正确率:{}".format(accuracy/test_data_size))  
    writer.add_scalar("test_loss",total_test_loss,total_test_step)  
    total_test_loss += 1  
  
    #保存模型  
    torch.save(test,"test_{},pth".format(i))  
    print("模型已经保存好")  
  
writer.close()
  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PyTorch是一个用于深度学习的开源框架,它提供了一组工具和接口,使得我们可以轻松地进行模型训练、预测和部署。在PyTorch中,数据处理是深度学习应用的重要部分之一。 PyTorch中的数据处理主要涉及以下几个方面: 1.数据预处理:包括数据清洗、数据归一化、数据增强等操作,以提高模型的鲁棒性和泛化能力。 2.数据加载:PyTorch提供了多种数据加载方式,包括内置的数据集、自定义的数据集和数据加载器等,以便我们更好地管理和使用数据。 3.数据可视化:为了更好地理解数据和模型PyTorch提供了多种数据可视化工具,如Matplotlib、TensorBoard等。 下面是一个简单的数据预处理示例,展示如何将图像进行归一化和数据增强: ```python import torch import torchvision.transforms as transforms from torchvision.datasets import CIFAR10 # 定义一个数据预处理管道 transform_train = transforms.Compose([ transforms.RandomCrop(32, padding=4), transforms.RandomHorizontalFlip(), transforms.ToTensor(), transforms.Normalize(mean=[0.4914, 0.4822, 0.4465], std=[0.2023, 0.1994, 0.2010]) ]) # 加载CIFAR10数据集,进行预处理 trainset = CIFAR10(root='./data', train=True, download=True, transform=transform_train) trainloader = torch.utils.data.DataLoader(trainset, batch_size=128, shuffle=True, num_workers=2) ``` 在上面的例子中,我们首先定义了一个数据预处理管道,其中包括了对图像进行随机裁剪、水平翻转、归一化等操作。然后,我们使用PyTorch内置的CIFAR10数据集,并将其预处理后,使用DataLoader进行批量加载。这个过程可以帮助我们更好地管理和使用数据,同时提高模型训练效率和泛化能力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值