pytorch中的setattr和getattr:多层网络堆叠

  同一个网络模块的多层叠加是深度学习中常用的操作,如果使用nn.Sequential将这些模块叠加到一起就会显得很呆:

 self.block=nn.Sequential(capsule_net(),capsule_net(),capsule_net(),capsule_net(),capsule_net(),capsule_net(), )

  对于这种方法,如果需要调整模块叠加的数量也很不方便。可以使用setattr()和getattr()实现相同的效果:

# 定义时
for i in range(layer_num):setattr(self, "capsule_layer" + str(i + 1), capsule_net().cuda())
self.capsule_layers = [getattr(self, "capsule_layer" + str(i + 1)) for i in range(layer_num)]
# 使用时
for capsule_layer in self.capsule_layers:result =capsule_layer(input)

  官方文档地址:setattr(),getattr()

setattr(object, name, value)此函数与 getattr() 两相对应。 其参数为一个对象、一个字符串和一个任意值。 字符串指定一个现有属性或者新增属性。 函数会将值赋给该属性,只要对象允许这种操作。 例如,setattr(x, ‘foobar’, 123) 等价于 x.foobar = 123。
getattr(object, name,[default])返回对象命名属性的值。name 必须是字符串。如果该字符串是对象的属性之一,则返回该属性的值。例如, getattr(x, ‘foobar’) 等同于 x.foobar。如果指定的属性不存在,且提供了 default 值,则返回它,否则触发 AttributeError。

  现在我们再看看上面用setattr()和getattr()实现的多层堆叠网络:

for i in range(layer_num):setattr(self, "capsule_layer" + str(i + 1), capsule_net().cuda())

  self即我们构建的模型对象,我们创建num个layer新增到self里,这个网络堆叠层的命名为"capsule_layer" + str(i + 1)。

self.capsule_layers = [getattr(self, "capsule_layer" + str(i + 1)) for i in range(layer_num)]

  这个方法可以将我们上面创建的网络堆叠层整理到一个self.capsule_layers里。

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

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

相关文章

Qt中tableView控件的使用

tableView使用注意事项 tableView在使用时,从工具栏拖动到底层页面后,右键进行选择如下图所示: 此处需要注意的是,需要去修改属性,从UI上修改属性如下所示: 也可以通过代码修改属性: //将其设…

栈和队列——c语言实现栈

本节复习栈和队列中栈的增删查改。 首先回顾一下栈的性质: 栈的存储数据的原则是“后入先出”, 先入的在栈底, 后入的在栈顶。 弹出数据时在栈顶弹出。 开始实现栈的接口 栈的所有函数接口 //栈的初始化 void StackInit(Stack* pst); //入栈…

某查查首页瀑布流headers加密

目标网站: 某查查 对目标网站分析发现 红框内的参数和值都是加密的,是根据算法算出来的,故进行逆向分析。 由于没有固定参数名,只能通过搜索headers,在搜索的位置上打上断点,重新请求。 断点在此处断住&a…

解决“source ~/.bashrc 无效”的问题

dockerfile 在执行 RUN source ~/.bashrc 的时候会报错: RUN source ~/.bashrc: 0.188 /bin/sh: 1: source: not found 原因 dockerfile默认的shell是sh,无法使用source 解决方案 在 RUN source ~/.bashrc 前面添加以下指令,将shell改为ba…

Vue/React 前端高频面试

说一说vue钩子函数 钩子函数是Vue实例创建和销毁过程中自动执行的函数。按照组件生命周期的过程分为:挂载阶段 -> 更新阶段 -> 销毁阶段。 每个阶段对应的钩子函数分别为:挂载阶段(beforeCreate,created,befor…

半小时到秒级,京东零售定时任务优化怎么做的?

导言: 京东零售技术团队通过真实线上案例总结了针对海量数据批处理任务的一些通用优化方法,除了供大家借鉴参考之外,也更希望通过这篇文章呼吁大家在平时开发程序时能够更加注意程序的性能和所消耗的资源,避免在流量突增时给系统…

Data Leakage and Evaluation Issues inMicro-Expression Analysis 阅读笔记

IEEE Transactions on Affective Computing上的一篇文章,做微表情识别,阅读完做个笔记。本文讨论了Data Leakage对模型准确度评估的影响,及如何融合多个微表情数据集,从而提升模型的准确度。工作量非常饱满,很认真&…

Oracle PL/SQL Programming 第8章:Strings 读书笔记

总的目录和进度,请参见开始读 Oracle PL/SQL Programming 第6版 具有字符数据类型的变量存储文本并由字符函数操作。 本章重点讨论单字节字符集,不涉及Unicode 或多字节字符集,不涉及CLOB(字符大对象)和 LONG。 Str…

HTTP与HTTPS-HTTPS 的应用数据是如何保证完整性的?

资料来源 : 小林coding 小林官方网站 : 小林coding (xiaolincoding.com) HTTPS 的应用数据是如何保证完整性的? TLS 在实现上分为握手协议和记录协议两层 TLS 握手协议就是我们前面说的 TLS 四次握手的过程,负责协商加密算法和生成对称密钥,后续用此密…

Spring Boot和Spring MVC常用注解

在Spring Boot和Spring MVC中,注解(Annotations)扮演着至关重要的角色,它们简化了传统的XML配置方式,使得开发过程更加直观和便捷。下面将介绍一些在Spring Boot和Spring MVC中常用的注解及其用法:Spring Boot常用注解 @SpringBootApplication:Spring Boot的核心注解,用于…

Redis的发布订阅功能教程,实现实时消息和key过期事件通知功能

Redis的发布订阅 Redis的发布/订阅(Pub/Sub)功能是一种消息传递模式,用于实现消息发布者(publisher)和订阅者(subscriber)之间的消息通信。在这种模式下,消息的发送者(发布者)将消息发送到特定的频道(channel),而订阅了该频道的接收者(订阅者)将会接收到这些消息…

SpringMVC的文件上传与下载

SpringMVC文件上传: 使用:org.springframework.web.multipart.commons.CommonsMultipartResolver 使用:headPhoto.transferTo(file); 2、文件存储位置问题 String realPath = request.getServletContext().getRealPath("/upload") String dir = new File(realP…

第7集《灵峰宗论导读》

《灵峰宗论》导读。诸位法师,诸位同学,阿弥陀佛!(阿弥陀佛!) 请大家打开讲义第16面。 在这一科当中讲到乙一、发心篇,发心篇总共有五篇的论文。前面两篇主要是说明成佛作祖、堕坑落堑&#xf…

【linux 时间问题】centos7.4时间快了8小时,ntpdate命令无法更新时间

出现ntpdate: the NTP socket is in use, exiting的错误信息通常意味着NTP客户端或服务器已经在运行,并且正在使用NTP socket。在CentOS 7.4上,ntpd或chronyd服务可能会与ntpdate命令冲突,因为它们都用于时间同步。 首先,您可以尝…

计算机网络的基础知识

网络的性能指标:网络速率,bpsbit/s; 时延包括四个组成部分:发送时延、传播时延、排队时延、处理时延; 网络各个层次结构设计的基本三原则:各个层次之间是相互独立的,每一个层之间有足够的灵活…

Dockerfile(3) - WORKDIR 指令详解

WORKDIR 切换到镜像中的指定路径&#xff0c;设置工作目录在 WORKDIR 中需要使用绝对路径&#xff0c;如果镜像中对应的路径不存在&#xff0c;会自动创建此目录一般用 WORKDIR 来替代 切换目录进行操作的指令 RUN cd <path> && <do something> WORKDIR…

WPF 【十月的寒流】学习笔记(3):DataGrid分页

文章目录 前言相关链接代码仓库项目配置&#xff08;省略&#xff09;项目初始配置xamlviewModel Filter过滤详细代码展示结果问题 Linq过滤CollectionDataxamlviewModel sql&#xff0c;这里用到数据库&#xff0c;就不展开了 总结 前言 我们这次详细了解一下列表通知的底层是…

LeetCode128. Longest Consecutive Sequence

文章目录 一、题目二、题解 一、题目 给定一个未排序的整数数组 nums &#xff0c;找出数字连续的最长序列&#xff08;不要求序列元素在原数组中连续&#xff09;的长度。 请你设计并实现时间复杂度为 O(n) 的算法解决此问题。 示例 1&#xff1a; 输入&#xff1a;nums …

分享three.js和cannon.js构建Web 3D场景

使用 three.js&#xff0c;您不再需要花哨的游戏PC或控制台来显示逼真的3D图形。 您甚至不需要下载特殊的应用程序。现在每个人都可以使用智能手机和网络浏览器体验令人惊叹的3D应用程序。 这个惊人的库和充满活力的社区是您在浏览器、笔记本电脑、平板电脑或智能手机上创建游…

jmeter(四)HTTP请求

启动jmeter&#xff0c;建立一个测试计划 这里再次说说怎么安装和启动jmeter吧&#xff0c;昨天下午又被人问到怎样安装和使用&#xff0c;我也是醉了&#xff1b;在我看来&#xff0c;百度能解决百分之八十的问题&#xff0c;特别是基础的问题。。。 安装&#xff1a;去官网…