PyTorch入门学习(十五):现有网络模型的使用及修改

目录

一、使用现有网络模型

二、修改现有网络模型


一、使用现有网络模型

PyTorch提供了许多流行的深度学习模型,这些模型在大规模图像数据集上进行了预训练。其中一个著名的模型是VGG16。下面是如何使用VGG16模型的示例代码:

python 复制代码
import torchvision
from torch import nn
from torchvision.models import VGG16

# 使用不带预训练权重的VGG16模型
vgg16_false = torchvision.models.vgg16(pretrained=False)

# 使用预训练权重的VGG16模型
vgg16_true = torchvision.models.vgg16(pretrained=True)

print(vgg16_false)
print(vgg16_true)

在上述代码中,使用torchvision.models.vgg16来加载VGG16模型。通过pretrained参数,我们可以选择是否加载预训练的权重。vgg16_false代表一个不带预训练权重的VGG16模型,而vgg16_true代表一个带有预训练权重的模型。

二、修改现有网络模型

一旦加载了现有的网络模型,可以对其进行修改,以满足特定任务的需求。下面是如何修改VGG16模型的示例代码:

python 复制代码
import torchvision
from torch import nn
from torchvision.models import VGG16

# 加载带有预训练权重的VGG16模型
vgg16 = torchvision.models.vgg16(pretrained=True)

# 添加一个新的线性层,将输出从1000类修改为10类
vgg16.classifier.add_module('add_linear', nn.Linear(1000, 10))

# 修改VGG16模型的最后一个全连接层
vgg16.classifier[6] = nn.Linear(4096, 10)

print(vgg16)

在上述代码中,加载了一个带有预训练权重的VGG16模型,并通过add_module方法添加了一个新的线性层,将输出从1000类修改为10类。此外,还演示了如何通过修改模型的索引来改变VGG16模型的最后一个全连接层。

这种方法可以帮助您快速构建适用于特定任务的模型,而无需从头开始训练整个网络。

完整代码如下:

python 复制代码
import torchvision
from torch import nn
from torchvision.models import VGG16_Weights

# train_data = torchvision.datasets.ImageNet("D:\\Python_Project\\pytorch\\data_image_net",split="train",download=True,transform=torchvision.transforms.ToTensor())

# 错误原因:参数pretrained自0.13起已弃用,将在0.15后删除,要改用"weights"。
vgg16_false = torchvision.models.vgg16(weights=None)
vgg16_true = torchvision.models.vgg16(weights=VGG16_Weights.DEFAULT)

# print(vgg16_true)

# 要想用于 CIFAR10 数据集, 可以在网络下面多加一行,转成10分类的输出,这样输出的结果,跟下面的不一样,位置不一样
# vgg16_true.add_module('add_Linear',nn.Linear(1000,10))
# print(vgg16_true)

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)

参考资料:

视频教程:PyTorch深度学习快速入门教程(绝对通俗易懂!)【小土堆】

相关推荐
CoovallyAIHub1 天前
仿生学突破:SILD模型如何让无人机在电力线迷宫中发现“隐形威胁”
深度学习·算法·计算机视觉
CoovallyAIHub1 天前
从春晚机器人到零样本革命:YOLO26-Pose姿态估计实战指南
深度学习·算法·计算机视觉
CoovallyAIHub1 天前
Le-DETR:省80%预训练数据,这个实时检测Transformer刷新SOTA|Georgia Tech & 北交大
深度学习·算法·计算机视觉
CoovallyAIHub1 天前
强化学习凭什么比监督学习更聪明?RL的“聪明”并非来自算法,而是因为它学会了“挑食”
深度学习·算法·计算机视觉
CoovallyAIHub1 天前
YOLO-IOD深度解析:打破实时增量目标检测的三重知识冲突
深度学习·算法·计算机视觉
用户1474853079742 天前
AI-动手深度学习环境搭建-d2l
深度学习
OpenBayes贝式计算2 天前
解决视频模型痛点,TurboDiffusion 高效视频扩散生成系统;Google Streetview 涵盖多个国家的街景图像数据集
人工智能·深度学习·机器学习
OpenBayes贝式计算2 天前
OCR教程汇总丨DeepSeek/百度飞桨/华中科大等开源创新技术,实现OCR高精度、本地化部署
人工智能·深度学习·机器学习
在人间耕耘3 天前
HarmonyOS Vision Kit 视觉AI实战:把官方 Demo 改造成一套能长期复用的组件库
人工智能·深度学习·harmonyos
西岸行者3 天前
学习笔记:SKILLS 能帮助更好的vibe coding
笔记·学习