pytorch对网络层的增加,删除,变更和切片

这篇具有很好参考价值的文章主要介绍了pytorch对网络层的增加,删除,变更和切片。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


前言

今天在这里纪录一下如何对torch网络的层进行更改:变更,增加,删除与查找
这里拿VGG16网络举例,先看一下网络结构

import torch
import torch.nn as nn
from torchvision import models

net = models.vgg11(pretrained=True)

pytorch添加新层,深度学习学习笔记,人工智能,深度学习,python,pytorch

一、在网络中添加一层:

net网络是一个树型结构, net下面有三个结点,分别是(features, avgpoll, classifier), 我们先在features结点添加一层’lastlayer’层

net.features.add_module('lastlayer', nn.Conv2d(512,512, kernel_size=3, stride=1, padding=1))

pytorch添加新层,深度学习学习笔记,人工智能,深度学习,python,pytorch

  • 在classifier结点添加一个线性层:
net.classifier.add_module('Linear', nn.Linear(1000, 10))

pytorch添加新层,深度学习学习笔记,人工智能,深度学习,python,pytorch

二、修改网络中的某一层

  • 以features 结点举例
net.features[8] = nn.Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))

pytorch添加新层,深度学习学习笔记,人工智能,深度学习,python,pytorch

  • 以classifier结点举例
net.classifier[6] = nn.Linear(1000, 5)

注意: 这里我尝试对Linear这一层进行更新, 但是Linear名字是字符串, 提取不出来,所以应该在之前添加网络时候, 名字不要取字符串, 否则会报错 ‘ 'str' object cannot be interpreted as an integer’。
pytorch添加新层,深度学习学习笔记,人工智能,深度学习,python,pytorch

三、网络层的删除

方法一:使用关键字del删除层(推荐)

删除前
pytorch添加新层,深度学习学习笔记,人工智能,深度学习,python,pytorch

model = prepare_vitmodel('mae_visualize_vit_large_ganloss.pth', 'vit_large_patch16')
del model.head  # 删除层
model

删除后
pytorch添加新层,深度学习学习笔记,人工智能,深度学习,python,pytorch

方法二:将层设置为空层

以features举例 classifier结点的操作相同,这里直接使用nn.Sequential()对改层设置为空即可

net.features[13] = nn.Sequential()

pytorch添加新层,深度学习学习笔记,人工智能,深度学习,python,pytorch

四、网络层的切片

net.features = nn.Sequential(*list(net.features.children())[:-4])

可以看到后面4层被去除了, 就是说可以使用列表切片的方法来删除网络层
net.classifier 对应 net.classifier.children()
net.features 对应 net.features.children()
pytorch添加新层,深度学习学习笔记,人工智能,深度学习,python,pytorch文章来源地址https://www.toymoban.com/news/detail-649834.html

五、网络层的冻结


#冻结指定层的预训练参数:
net.feature[26].weight.requires_grad = False

到了这里,关于pytorch对网络层的增加,删除,变更和切片的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python实现Excel切片删除功能(附源码)

    先上效果图!!! 如下是需要处理的Excel文件,可以看到在2 7行和117行处的E列 存在数据不一致情况,需进行“ 切片删除 ” 运行结果图如下: 我们可以发现, E列27行至117行 处的不一致数据已经被删除,即实现了在Excel文件内部进行进行**“切片化”**的数据删除操作!!!

    2024年01月17日
    浏览(30)
  • pytorch中的矩阵切片操作完全讲解

    我们经常需要从2维或3维tensor中进行切片操作,比如从mask模型中取出mask所在位置的向量。 Talk is cheap, show me code.  以下所有维度从0开始,3维即 0,1,2 ----------------------------------------------------- 另外,pytorch的函数已经为 这种切片操作准备好了,用以下代码: batch[\\\"loss_ids \\\"] 是

    2024年02月14日
    浏览(45)
  • 深度学习--PyTorch定义Tensor以及索引和切片

    ​这些方法只是开辟了空间,所附的初始值(非常大,非常小,0),后面还需要我们进行数据的存入。 torch.empty():返回一个没有初始化的Tensor,默认是FloatTensor类型。 torch.FloatTensor():返回没有初始化的FloatTensor。 torch.IntTensor():返回没有初始化的IntTensor。 随机均匀分布:

    2023年04月20日
    浏览(49)
  • 【pytorch】随着epoch增加,显存逐渐增加?解决pytorch显存释放问题

    在训练时,检测 “out of memory” 的error并通过torch.cuda.empty_cache()处理 如: 在测试时,避免忘记设置 torch.no_grad() 如: Pytroch - 显存释放问题

    2024年02月11日
    浏览(61)
  • 四、网络层(一)网络层的功能

    目录 1.0 网络层的功能 1.1 异构网络互连 1.2 路由选择与分组转发 1.3 软件定义网络(SDN) 1.4 拥塞控制 网络层的主要任务就是 将分组从源主机经过多个网络和多段链路传输到目的主机 ,可以将该任务划分为 分组转发 和 路由选择 两种重要的功能。  网络层使用的是 向上只提供

    2024年02月09日
    浏览(41)
  • 从 X 入门Pytorch——Tensor的索引,切片,拼接,拆分,Reduction操作

    本文参加新星计划人工智能(Pytorch)赛道: https://bbs.csdn.net/topics/613989052 承接上文:自己深度学习环境搭建和免费环境使用+Tensor构造+Tensor基本操作: 从 X 入门深度学习(Pytorch版本) 汇总: Name Out a[i, j, k, …] = a[i][j][k][…] 获取张量a的具体数据 a[start : end : step, start1 : end1 : step1

    2024年02月03日
    浏览(42)
  • C#匿名方法增加、删除委托

    匿名方法给我们带来了方便,那么如何增加删除匿名方法中附加的委托(事件)呢 一般写法: 1 2 3 4 this .Loaded += (sender, e) =       {              //Do something       }; 进化写法: 1 2 3 4 5 6 7 this .Loaded += new   RoutedEventHandler(FormulaAssign_Loaded); void   FormulaAssign_Loaded( objec

    2024年02月11日
    浏览(36)
  • Elasticsearch 常用的增加、删除、修改、查询语句

    新增 删除 修改 批量增删改 查询 查询指定索引下全部数据 查询指定索引下指定id的数据 查询指定索引下全部数据 查询指定值(match) 在多个字段中查询指定值(multi_match) match、multi_match是模糊匹配,匹配时会对所查找的进行分词,然后按分词匹配查找。 term 查询

    2024年02月03日
    浏览(42)
  • ubuntu增加、删除、查看、赋予权限用户命令大全

    先说下增加用户的两种命令adduser和useradd的区别: 为了省事情,习惯于用adduser; 1、新建用户 name是你要创建的用户的用户名,然后设置密码,一路回车就可以了 2、给新用户sudo权限 新创建的用户没有root权限,我们执行以下命令给用户sudo权限 3、删除用户 删除用户及用户所有

    2024年02月05日
    浏览(40)
  • windows 删除+增加右键新建菜单选项

    目录 一、删除右键新建菜单选项 1. win + R 打开注册表 2. 查看现有的右键新建菜单选项 3. 删除现有的右键新建菜单选项 二、增加右键新建菜单选项   1. win + R 打开注册表 键盘 win + R,输入 regedit,从而打开注册表。 2. 查看现有的右键新建菜单选项 如果你不清楚你的右键新建

    2024年02月06日
    浏览(62)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包