[深度学习]使用torchvison经典模型训练cifar10(AlexNet,VGG,Inception,ResNet等)

代码是参考pytorch上面的官方教程,教程给出了一个简单了卷积网络训练,前半部分是卷积,后半部分全连接的类型,用来分类cifar10. https://pytorch.org/tutorials/beginner/blitz/cifar10_tutorial.html#sphx-glr-beginner-blitz-cifar10-tutorial-py

而我想看看torchvison里经典模型的性能如何,所以就做了一些修改。因为torchvison是在imagenet上训练,所以对于输入输出的大小需要修改,cifar10比imagenet数据简单得多,而且可以直接从网上下载而不用申请。

最好是在jupyter notebook上运行。推荐谷歌的conlab免费的GPU服务,可以自己百度怎么使用。

 

首先是导入必要的 包,看一下当前是否具备gpu cuda环境,代码在cpu也能运行。

import torch
import torchvision
import torchvision.transforms as transforms


# Assume that we are on a CUDA machine, then this should print a CUDA device:
device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")

  
print(device)

然后transfrom是对数据集进行预处理,它可以是多个操作,resize是为了匹配imagenet的输入大小,本来cifar10的数据集只有32*32,为了匹配(256*256)就要resize。 后面还有totensor变成张量和normalize归一化处理。

torchvision.datasets.CIFAR10是torchvison为我们写好,可以下载数据集到指定的root路径,具体的参数可以去官网上找,其实也不难理解,train就是是否为训练数据,shuffle是否洗牌,num_workers是多少个进程一起工作,0就是只有一个进程。

loader可以看做是一个容器,把训练和测试的数据放入一个容器里,后面会根据batchsize大小取出来。

classes里面代表了分类的类别有哪些。

transform = transforms.Compose(
    [transforms.Resize(252),
     transforms.ToTensor(),
     transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))])

batch_size = 8

trainset = torchvision.datasets.CIFAR10(root='./data', train=True,
                                   
  • 3
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值