使用VGG16进行CIFAR10分类的猫狗大战实例

原始代码的运行及结果截图

因为代码在colab上执行,所以要确保在运行时使用的是GPU因为代码在colab上执行,所以要确保在运行时使用的是GPU

在这里插入图片描述
此处下载适合在colab上使用的训练集
在这里插入图片描述
分别加载训练集和测试集,并把图片进行分类,每五张图片一组,作为一个batchsize(这个batchsize可以在后续进行修改,以达到优化算法的目的)
在这里插入图片描述
下载训练模型
在这里插入图片描述
将网络的结构打印出来
在这里插入图片描述
开始第一次的训练,并保存模型
在这里插入图片描述
训练的准确率并不是很高,所以后续的优化空间很大
在这里插入图片描述
这是测试函数及过程
在这里插入图片描述
测试函数的成功率出奇的高,想来可能是跟特定的数据集有关

代码的改进

(1)前文讲过,将batchsize的值调高,可以理解为将每个分组的特征变得更加明显,训练起来也更加方便,可以提高识别的准确率
(2)改进优化的函数,将之前的SGD函数改为Adam函数,具体原理此处不做赘述
在这里插入图片描述
这是改进后训练过程中的准确率
在这里插入图片描述
这是改进后测试过程中的准确率

综上来说,两个过程的准确率都有了相当程度的提高,可以证明改进的方法是正确的

项目完整代码

import numpy as np
import matplotlib.pyplot as plt
import os
import torch
import torch.nn as nn
import torchvision
from torchvision import models,transforms,datasets
import time
import json


# 判断是否存在GPU设备
device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")
print('Using gpu: %s ' % torch.cuda.is_available())
! wget http://fenggao-image.stor.sinaapp.com/dogscats.zip
! unzip dogscats.zip
normalize = transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])

vgg_format = transforms.Compose([
                transforms.CenterCrop(224),
                transforms.ToTensor(),
                normalize,
            ])

data_dir = './dogscats'

dsets = {
   x: datasets.ImageFolder(os.path.join(data_dir, x), vgg_format)
         for x in ['train', 'valid']}

dset_sizes = {
   x: len(dsets[x]) for x in ['train', 
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值