【PyTorch教程】P25 pytorch中现有模型

news/2024/10/21 17:42:15/

P25 pytorch中现有模型

  • 位置:
    在这里插入图片描述

  • 预训练的意思pretrain,是已经在ImageNet数据集上训练好的:progress是对下载的管理:
    在这里插入图片描述

  • 使用的dataset,ImageNet:需要安装scipy库:

在这里插入图片描述

  • 点开这个ImageNet看里面的信息:
    在这里插入图片描述

  • 里面的重要信息:
    在这里插入图片描述

  • 转而使用已经训练好的model:
    在这里插入图片描述

  • 上图:false意思是不下载已经在ImageNet里面训练好的模型,即conv、pooling layers里面的那些参数,而true就要下载他们。
    对比二者的参数:

在这里插入图片描述
在这里插入图片描述

  • 使用vgg16,用在CIFAR数据集上,进行分类:
    Vgg16训练时,用的是ImageNet数据集,它把数据分为1000个类,而CIFAR把数据分为10类,那么就有两种做法,来利用vgg16来处理 CIFAR数据集:1、vgg16后面加一个新的线性层,使1000映射到10;2、直接把vgg16最后的输出层改为10类:这里的add_module是集成 - 在pytorch当中的方法了,直接用:
    下图是第一种方法:
    在这里插入图片描述

  • 还有下面这种写法,可以把新添加的层,放在classifier的框架底子,变成classifier的子集,原来是在大的框架vgg的直属下面:
    在这里插入图片描述

  • 下面是第二个方法:替换原来的输出类型数:图中圈2:
    在这里插入图片描述

可以运行的代码

# -*- coding: utf-8 -*-import torchvisiontrain_data = torchvision.datasets.ImageNet("../data_image_net", split='train', download=True,transform=torchvision.transforms.ToTensor())from torch import nnvgg16_false = torchvision.models.vgg16(pretrained=False)
vgg16_true = torchvision.models.vgg16(pretrained=True)# print(vgg16_true)'''
print的结果:VGG((features): Sequential((0): Conv2d(3, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))(1): ReLU(inplace=True)(2): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))(3): ReLU(inplace=True)(4): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)(5): Conv2d(64, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))(6): ReLU(inplace=True)(7): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))(8): ReLU(inplace=True)(9): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)(10): Conv2d(128, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))(11): ReLU(inplace=True)(12): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))(13): ReLU(inplace=True)(14): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))(15): ReLU(inplace=True)(16): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)(17): Conv2d(256, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))(18): ReLU(inplace=True)(19): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))(20): ReLU(inplace=True)(21): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))(22): ReLU(inplace=True)(23): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)(24): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))(25): ReLU(inplace=True)(26): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))(27): ReLU(inplace=True)(28): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))(29): ReLU(inplace=True)(30): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False))(avgpool): AdaptiveAvgPool2d(output_size=(7, 7))(classifier): Sequential((0): Linear(in_features=25088, out_features=4096, bias=True)(1): ReLU(inplace=True)(2): Dropout(p=0.5, inplace=False)(3): Linear(in_features=4096, out_features=4096, bias=True)(4): ReLU(inplace=True)(5): Dropout(p=0.5, inplace=False)(6): Linear(in_features=4096, out_features=1000, bias=True)    # 由于 imagenet 数据集,他的分类结果是 1000,所以这里out_features 值为1000)                                                                # 要想用于 CIFAR10 数据集, 可以在网络下面多加一行,转成10分类的输出         
)
'''train_data = torchvision.datasets.CIFAR10('../dataset', train=True, transform=torchvision.transforms.ToTensor(),download=True)# vgg16_true.add_module('add_linear',nn.Linear(1000, 10))
# 要想用于 CIFAR10 数据集, 可以在网络下面多加一行,转成10分类的输出,这样输出的结果,跟下面的不一样,位置不一样vgg16_true.classifier.add_module('add_linear', nn.Linear(1000, 10))
# 层级不同
# 如何利用现有的网络,改变结构
print(vgg16_true)# 上面是添加层,下面是如何修改VGG里面的层内容
print(vgg16_false)
vgg16_false.classifier[6] = nn.Linear(4096, 10)  # 中括号里的内容,是网络输出结果自带的索引,套进这种格式,就可以直接修改那一层的内容
print(vgg16_false)'''
这个教程,可以自己修改别人已经写好了的模型,或者在里面添加自己的需求
'''

完整目录

  • P6-P7 数据加载
  • P8-9 Tensorboard使用
  • P10-11 Transform的用法
  • P12-13 常用的tranforms
  • P14 torchvision中的数据集的使用
  • P15 dataloader的使用
  • P16 nn.Module
  • P17 卷积
  • P18 卷积层使用
  • P19 池化
  • P20 ReLU
  • P21线性层和其它层
  • P22 squential和小实战
  • P23 loss function
  • P24 优化器
  • P25 pytorch中现有模型
  • P26 网络模型的保存和加载
  • P27、28、29 完整的模型套路
  • P30 GPU加速
  • P31 GPU加速_2
  • P32 完整的模型验证套路
  • P33 github的使用

http://www.ppmy.cn/news/429829.html

相关文章

Excel学习笔记:P25-最强函数搭档INDEX与MATCH(VLOOKUP解决不了的问题,找它们就对了)

文章目录 一、HLOOKUP二、INDEX与MATCH函数2.1 INDEX函数2.2 MATCH函数 三、例子 一、HLOOKUP VLOOKUP也有一些缺陷,在一些情况中无法再使用VLOOKUP,如: ①当搜寻的栏位不在表格的最左侧。如此时想根据学号查找姓名和成绩,但学号…

P24 p25 p26 p27 p28

p24 p25 p26 选择结构&#xff1a;if语句&#xff1a;执行满足条件的语句 1.单行格式的if语句&#xff1a; if(条件) {满足条件执行的语句} 2.多行格式的if语句&#xff1a; if(条件) {条件满足执行的语句} else if{条件不满足执行的语句} &#xff1b; #include<…

小土堆pytorch教程学习笔记P25

P25.现有网络模型的使用及修改&#xff08;VGG16&#xff09; torchvision.models.vgg16(pretrained: bool False, progress: bool True, **kwargs: Any) → torchvision.models.vgg.VGG Parameters pretrained (bool) – If True, returns a model pre-trained on ImageNet …

标识符测试(P25)

/*** 测试标志符用法* 2023/3/15*/ public class TestIdentifer {int a123 132;//int 123 465; //数字不能开头int $a1 3; //可以用$开头int _123 2; //可以用_开头//int #123 6;int 年龄 18; //可以用汉字&#xff0c;但一般不建议//int int …

P25 let's talk in english

https://www.bilibili.com/video/BV1UE411C7ue?p25 听不清的听力&#xff1a; 12:40 we still write and talk on the phone. 我没有听出来 write 的意思 听成了 right so it still feels like were toghter in some way on holiday its one sad part about living so …

python05--数据结构(P25)

一、结构性数据结构 一个具体的数据结构就是一个二元组 D (E,R) 其中 E 是数据结构 D 的元素集合&#xff0c;而 R∈E * E 是 D 的元素之间的某种关系。 总结出一批特别有用的典型数据结构&#xff1a; 集合结构&#xff1a;其数据元素之间没有需要关注的明确关系&#xff0c;…

P25 Scanner类

P25 Scanner类 1.什么是Scanner类2.引用类型使用步骤2.1 导包2.2 创建对象2.3 调用方法 3.Scanner使用步骤4.练习4.1 求和4.2 取最值 5.匿名对象【了解】5.1 概念5.2 应用场景 系统&#xff1a;Win10 Java&#xff1a;1.8.0_333 IDEA&#xff1a;2020.3.4 了解了 API 的使用方法…

MyBatis学习笔记p16-p25

MyBatis 映射文件 映射文件指导着MyBatis如何进行数据库增删改查&#xff0c; 有着非常重要的意义&#xff1b; •cache –命名空间的二级缓存配置 •cache-ref – 其他命名空间缓存配置的引用。 •resultMap – 自定义结果集映射 •parameterMap – 已废弃&#xff01;老式风…