当前位置:网站首页>先有网络模型的使用及修改
先有网络模型的使用及修改
2022-07-01 04:35:00 【booze-J】
先有网络模型的使用
使用示例代码:
import torchvision
from torch import nn
# 加载网络
# 这一句话(当pretrained设置为False时)就相当与把网络架构在这里替换了一下,网络模型的参数都是初始化的,是默认的一些参数
vgg16_false = torchvision.models.vgg16(pretrained=False)
# 这一句话(当pretrained设置为True时)网络模型的参数都是在ImageNet数据集上训练好的,就是在ImageNet数据集上能够达到一个比较好的效果
vgg16_true = torchvision.models.vgg16(pretrained=True)
vgg16的使用有两个常用参数,分别是pretrained和process。
- pretrained - 为True的话,说明这个网络是已经训练好的在训练数据集上有比较好的效果 若为False则说明这个网络是没训练的
- process - 为True则显示下载神经网络参数的进度条若为False则不显示下载神经网络参数的进度条
通俗来理解pretrained,就相当于什么呢?比如搭建神经网络卷积层时,你给了一个kernel_size但是并没有kernel_size中的参数,pretrained=True时相当于你得到了一个带参数的卷积核,pretrained=False时相当于你只知道这个卷积核的大小。
先有网络模型的修改(如何利用现有的网络去改动它的一个结构)
1.添加网络层
示例代码如下:
import torchvision
from torch import nn
# 加载网络
vgg16_false = torchvision.models.vgg16(pretrained=False)
print("vgg16_false:\n",vgg16_false)
vgg16_true = torchvision.models.vgg16(pretrained=True)
print("vgg16_true:\n",vgg16_true)
# 如何利用现有的网络去改动他的一个结构
# 1.添加网络层
# 加载CIFAR10数据集
train_data = torchvision.datasets.CIFAR10("./CIFAR10",train=True,transform=torchvision.transforms.ToTensor())
# 将vgg16_true模型应用到CIFAR10数据集上,为什么要添加一个in_feature=1000,out_feature=10的线性层呢?因为vgg16_true网络训练的ImageNet数据集有1000个分类,而CIFAR10只有10分类,所以要将vgg16_true网络应用在CIFAR10上的话,需要添加一个in_feature=1000,out_feature=10的线性层。
# 方式1:在整个网络中直接添加
# vgg16_true.add_module("add_linear",nn.Linear(1000,10))
# 方式2:在相应的模块中添加
vgg16_true.classifier.add_module("add_linear",nn.Linear(1000,10))
print("vgg16_true:\n",vgg16_true)
运行结果:

讲解:将vgg16_true模型应用到CIFAR10数据集上,为什么要添加一个in_feature=1000,out_feature=10的线性层呢?因为vgg16_true网络训练的ImageNet数据集有1000个分类,而CIFAR10只有10分类,所以要将vgg16_true网络应用在CIFAR10上的话,需要添加一个in_feature=1000,out_feature=10的线性层。
2.直接修改网络
示例代码如下:
import torchvision
from torch import nn
# 加载网络模型
vgg16_false = torchvision.models.vgg16(pretrained=False)
print("vgg16_false:\n",vgg16_false)
vgg16_true = torchvision.models.vgg16(pretrained=True)
print("vgg16_true:\n",vgg16_true)
# 如何利用现有的网络去改动他的一个结构
# 2.直接修改网络
# 加载CIFAR10数据集
train_data = torchvision.datasets.CIFAR10("./CIFAR10",train=True,transform=torchvision.transforms.ToTensor())
# 将vgg16_true模型应用到CIFAR10数据集上,为什么修改最后的线性层out_feature=10呢?因为vgg16_true网络训练的ImageNet数据集有1000个分类,而CIFAR10只有10分类,所以要将vgg16_true网络应用在CIFAR10上的话,需要修改最后的线性层out_feature=10。
# 按顺序对网络进行索引,修改最后的线性层
vgg16_false.classifier[6] = nn.Linear(4096,10)
print("vgg16_false",vgg16_false)
运行结果:

讲解:将vgg16_true模型应用到CIFAR10数据集上,为什么修改最后的线性层out_feature=10呢?因为vgg16_true网络训练的ImageNet数据集有1000个分类,而CIFAR10只有10分类,所以要将vgg16_true网络应用在CIFAR10上的话,需要修改最后的线性层out_feature=10。
边栏推荐
- slf4j 简单实现
- TCP server communication flow
- 一些小知识点
- 2022 polymerization process test questions and simulation test
- How to view the changes and opportunities in the construction of smart cities?
- Mallbook: how can hotel enterprises break the situation in the post epidemic era?
- Daily question - line 10
- Shell之一键自动部署Redis任意版本
- Programs and processes, process management, foreground and background processes
- MySQL advanced -- you will have a new understanding of MySQL
猜你喜欢

The junior college students were angry for 32 days, four rounds of interviews, five hours of soul torture, and won Ali's offer with tears

Extension fragment

2022 a special equipment related management (elevator) simulation test and a special equipment related management (elevator) certificate examination

TASK04|數理統計

VIM简易使用教程

2022年煤气考试题库及在线模拟考试

I also gave you the MySQL interview questions of Boda factory. If you need to come in and take your own

2022年化工自动化控制仪表操作证考试题库及答案

Daily question - line 10

Embedded System Development Notes 79: why should I get the IP address of the local network card
随机推荐
(12) Somersault cloud case (navigation bar highlights follow)
VIM简易使用教程
About the transmission pipeline of stage in spark
After many job hopping, the monthly salary is equal to the annual salary of old colleagues
JS image path conversion Base64 format
Grey correlation cases and codes
2022.2.7-2.13 AI industry weekly (issue 84): family responsibilities
Summary of testing experience - Testing Theory
扩展-Fragment
2022年煤气考试题库及在线模拟考试
Programs and processes, process management, foreground and background processes
Introduction of Spock unit test framework and its practice in meituan optimization___ Chapter I
How do I sort a list of strings in dart- How can I sort a list of strings in Dart?
One job hopping up 8K, three times in five years
2022 t elevator repair question bank and simulation test
Web server: how to choose a good web server these five aspects should be paid attention to
js 图片路径转换base64格式
2022 Shanghai safety officer C certificate examination question simulation examination question bank and answers
离线安装wireshark2.6.10
Cmake selecting compilers and setting compiler options