torchvision.models._utils.IntermediateLayerGetter()使用

torchvision.models._utils.IntermediateLayerGetter()使用


源码如下:

from    collections import OrderedDictimport torch
from torch import nnclass IntermediateLayerGetter(nn.ModuleDict):"""Module wrapper that returns intermediate layers from a modelIt has a strong assumption that the modules have been registeredinto the model in the same order as they are used.This means that one should **not** reuse the same nn.Moduletwice in the forward if you want this to work.Additionally, it is only able to query submodules that are directlyassigned to the model. So if `model` is passed, `model.feature1` canbe returned, but not `model.feature1.layer2`.Arguments:model (nn.Module): model on which we will extract the featuresreturn_layers (Dict[name, new_name]): a dict containing the namesof the modules for which the activations will be returned asthe key of the dict, and the value of the dict is the nameof the returned activation (which the user can specify).def __init__(self, model, return_layers):if not set(return_layers).issubset([name for name, _ in model.named_children()]):raise ValueError("return_layers are not present in model")orig_return_layers = return_layersreturn_layers = {k: v for k, v in return_layers.items()}layers = OrderedDict()for name, module in model.named_children():layers[name] = moduleif name in return_layers:del return_layers[name]if not return_layers:breaksuper(IntermediateLayerGetter, self).__init__(layers)self.return_layers = orig_return_layersdef forward(self, x):out = OrderedDict()for name, module in self.named_children():x = module(x)if name in self.return_layers:out_name = self.return_layers[name]out[out_name] = xreturn out

传入参数:
model:输入是我们要提取中间层特征的模型
return_layers:返回层是返回一个字典,是对应的层名与对应的特征

原理举例:
这里引入pytorch中的ResNet18模型打印各层结构

import torchvision
m = torchvision.models.resnet18(pretrained=False)
print(m)

输入如下:
在这里插入图片描述

m = torchvision.models.resnet18(pretrained=True)# extract layer1 and layer3, giving as names `feat1` and feat2`  
new_m = torchvision.models._utils.IntermediateLayerGetter(m,{'layer1': 'feat1', 'layer3': 'feat2'})
out = new_m(torch.rand(1, 3, 224, 224))
print([(k, v.shape) for k, v in out.items()])

输出结果如下:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/658486.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python采集学习笔记-读取excel数据

表格格式 方法一:使用xlrd import xlrd 1.读取Excel文件 workbook xlrd.open_workbook(plc.xlsx) 2.读取第一个表 sheet workbook.sheet_by_index(0) 3.获取表格总行数 total_rows sheet.nrows 4.创建列表,存储表格一行中每一列信息 plc_info [] for row in range(1…

【JAVA】Long类型返回到前端,精度丢失

一. 问题阐述 20位long类型的数字,从后端接口返回到前端后【四舍五入】 MYSQL端 (1)bigint (20) (2)具体某一条数据 JAVA端 (1)实体类 (2)服务类 (3&…

docker可视化操作

docker可视化操作,ui界面操作 1.检查docker服务状态 docker status2.安装服务 部署 Portainer 1.从镜像仓库中拉取 Portainer:docker pull portainer/portainer2.创建数据卷: docker volume create portainer_db 3.启动 Portainer命令&…

86.网游逆向分析与插件开发-物品使用-物品丢弃的逆向分析与C++代码的封装

内容参考于:易道云信息技术研究院VIP课 上一个内容:物品使用的逆向分析与C代码的封装-CSDN博客 码云地址(ui显示角色数据 分支):https://gitee.com/dye_your_fingers/sro_-ex.git 码云版本号:7563f86877c…

NFTScan 与 Merlin Protocol 共同推出 BRC20 Indexer Oracle,于今日正式上线!

近日,NFT 数据基础设施 NFTScan 与 Merlin Protocol 进行战略合作,联合推出了比特币网络原生资产 Indexer Oracle 服务,现在该服务已在 NFTScan 开发者平台上线,任何开发者都可以注册使用! Merlin Protocol 是一个专用…

linux 磁盘标签类型MBR转换为GPT

[rootlocalhost /]# fdisk -l 磁盘 /dev/sda:299.4 GB, 299439751168 字节,584843264 个扇区 Units 扇区 of 1 * 512 512 bytes 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/最佳):512 字节 / 512 字节 磁盘标签类…

解读 HTTP 和 HTTPS:有何异同?

超文本传输安全协议(HTTPS)是建立在超文本传输协议(HTTP)之上的一种安全网络传输协议。在计算机网络上传输时,HTTPS 通过传输层安全性(TLS)或它的前身安全套接字层(SSL)为…

谷歌上架防关联VPS开到和原来一样的IP造成关联?应该怎么选?

随着Google paly的发展,竞争越来越激烈,开发者们也面临的越来越多的挑战。其中,如何降低关联风险是开发者们重点关注的问题。 为了防止开发者账号的滥用或欺诈,谷歌会通过判断账号之间是否存在关联,并对违规账号进行处…

【Vue】二、Vue 组件展示控制的优雅解决方案

vue项目中展示的组件,我平常都是通过v-show进行展示控制,类似这样 通常情况下,一个正常展示组件的流程,是通过前端用户点击触发函数,在函数中对data数据进行操作,从而展示不同的页面 showWork: false, sho…

首次接触共享办公室,有哪些问题需要注意?

随着互联网和创业的发展,越来越多的企业和个人选择共享办公空间作为他们的办公场所。共享办公空间是一种提供灵活的办公模式和配套的设施和服务的空间,可以帮助企业和个人节省成本和空间,提高效率和创新,拓展人脉和资源。但是&…

【C++】STL之空间配置器(了解)

一、什么是空间配置器 空间配置器 ,顾名思义就是为各个容器高效的管理空间(空间的申请与回收)的,在默默地工作。虽然在常规使用 STL 时,可能用不到它,但站在学习研究的角度,学习它的实现原理对…

注册亚马逊店铺用动态IP可以吗?

注册亚马逊店铺可以用动态IP,只要是独立且干净的网线就没问题,亚马逊规则要求一个IP地址只能出现一个亚马逊店铺,若使用不当会导致关联账户。 固定ip可以给我们的账户带来更多的安全,要知道关联问题是亚马逊上的一个大问题&#…

PHP/原生类/Java/Python反序列化总结

PHP反序列化 #方法&属性-调用详解&变量数据详解 对象变量属性: public(公共的):在本类内部、外部类、子类都可以访问 protect(受保护的):只有本类或子类或父类中可以访问 private(私人的):只有本类内部可以使用 序列化数据显示: private 属性序…

python爬虫之豆瓣首页图片爬取

网址:https://movie.douban.com/ import requests from lxml import etree import re url https://movie.douban.com headers {User-Agent : Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.5735.289 Safari/5…

如何快速知道app当前页面是哪一个Activity(2.0升级版)

点我跳转 如何快速知道app当前页面是哪一个Activity 1.0版本 这个版本是用adb 命令实现的,想看的可以看看,学习一下adb 命令。 今天做了一个非常简易的app来直接监控当前页面Activity,效果直接炸裂,效果图如下: 有需要…

详解SpringCloud微服务技术栈:深入ElasticSearch(2)——自动补全、拼音搜索

👨‍🎓作者简介:一位大四、研0学生,正在努力准备大四暑假的实习 🌌上期文章:详解SpringCloud微服务技术栈:深入ElasticSearch(1)——数据聚合 📚订阅专栏&…

Windows断开映射磁盘提示“此网络连接不存在”,并且该磁盘直在资源管理器中

1、打开注册表编辑器 快捷键winR 打开“运行”, 输入 regedit 2、 删除下列注册表中和无法移除的磁盘相关的选项 \HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2\ 3、打开“任务管理器”,重新启动“Windows资源…

Spring Boot第一天

SpringBoot概述 Spring Boot是Spring提供的一个子项目,用于快速构建Spring应用程序 传统方式构建Spring应用程序 导入依赖繁琐 项目配置繁琐 为了简化如此繁琐的配置流程,SpringBoot这一子项目提供了如下特性 SpringBoot特性 起步依赖 本质上就是一个…

代码随想录算法训练营第十六天 | 完全二叉树

目录 完全二叉树 LeetCode 222. 完全二叉树的节点个数 完全二叉树 作者:labuladong 如何求一棵完全二叉树的节点个数呢? // 输入一棵完全二叉树,返回节点总数 int countNodes(TreeNode root);如果是一个普通二叉树,显然只要向…

Camunda中强大的监听服务

文章目录 简介创建工程JavaDelegateTaskListenerExecutionListener部署发起流程CustomExecutionListener开始节点CustomExecutionListenerCustomJavaDelegateCustomExecutionListenerCustomTaskListener用户节点 ExpressionDelegate Expression流程图 简介 Camunda预览了很多接…