python中forward的参数_如何将关键字参数传递给preforward钩子使用的forward?
Torchscript不兼容(截至1.2.0)
首先,您的示例torch.nn.Module有一些小错误(可能是意外造成的)。在
第二,您可以将任何传递给forward,register_forward_pre_hook将只获得将传递给您的torch.nn.Module(无论是层或模型或任何其他内容)的参数。如果不修改forward调用,确实无法做到这一点,但为什么要避免这种情况呢?您可以简单地将参数转发到基函数,如下所示:import torch
class NeoEmbeddings(torch.nn.Embedding):
def __init__(self, num_embeddings: int, embedding_dim: int, padding_idx=-1):
super().__init__(num_embeddings, embedding_dim, padding_idx)
self.register_forward_pre_hook(NeoEmbeddings.neo_genesis)
# First argument should be named something like module, as that's what
# you are registering this hook to
@staticmethod
def neo_genesis(module, inputs): # No need for self as first argument
net_input, higgs_bosson = inputs # Simply unpack tuple here
return net_input
def forward(self, inputs, higgs_bosson):
# Do whatever you want here with both arguments, you can ignore
# higgs_bosson if it's only needed in the hook as done here
return super().forward(inputs)
if __name__ == "__main__":
x = NeoEmbeddings(10, 5, 1)
# You should call () instead of forward so the hooks register appropriately
print(x(torch.tensor([0, 2, 5, 8]), 1))
你不能用更简洁的方式来做,但是限制是base的类forward方法,而不是钩子本身(tbh我不希望它更简洁,因为它在IMO中会变得不可读)。在
Torchscript兼容
如果要使用torchscript(在1.2.0上测试),可以使用组合而不是继承。您只需更改两行代码,代码可能如下所示:
^{pr2}$
python中forward的参数_如何将关键字参数传递给preforward钩子使用的forward?相关推荐
- Python中单个下划线“ _”变量的用途是什么?
这段代码中_ after for的含义是什么? if tbh.bag:n = 0for _ in tbh.bag.atom_set():n += 1 #1楼 下划线_在Python中被视为" ...
- Python中单个下划线“_”变量的目的是什么?
在Python中,下划线_被视为" 我不关心 "或" 丢失 "变量 python解释器将最后一个表达式值存储到名为的特殊变量中_. >>> 1 ...
- eval在python中是什么意思_如何在Python中使用eval ?
Python中的 eval是什么? 在Python中,我们有许多内置方法,这些方法对于使Python成为所有人的便捷语言至关重要,而eval是其中一种.eval函数的语法如下: eval(expres ...
- python中的下划线_讲解
python中,下划线 "_""_"" \_" 不管是单独作为变量名或者作为变量名的前缀或者后缀,是有特殊含义的,下面简要的来总结一下. 1 ...
- Python中Button按钮组件常用的属性及参数设置
Python中Button按钮组件常用的属性及参数设置 本篇文章中小编给大家介绍Button按钮组件的相关常用的属性以及参数的设置. 一. 常用属性使用语法 变量=Button(父容器(根窗口),参数 ...
- 在python中逻辑量有_(五)我的魔法竟有了一丝逻辑
学习目标 了解魔法世界中的结构表现--缩进 了解魔法世界的逻辑判断--if 了解魔法世界的多次逻辑判断--ifelse嵌套 了解魔法世界中的逻辑运算--且 and 与或 or 一.了解魔法世界中的逻辑 ...
- 2019.5.8_此书真乃宝书也_从定位参数到仅限关键字参数
<摘自流畅的Python> 此书真乃宝书也,虽说还是有点儿没懂 从定位参数到仅限关键字参数 Python最好的特性之一是提供了极为灵活的参数处理机制,而且Python3进一步提供了仅限关键 ...
- python中ndim是什么_使用Python中的ndim和shape属性获取darray数据的维度、长度、形状和其他参数,python,ndarray,等...
我们在描述一个多维数组的时候,经常会用到两个参数:维度(dimension)和形状(shape),以二维数组为例,我们可以用矩阵来形象地联想这两个参数,对于矩阵,显然我们最常见的矩阵是二维的,所以他的 ...
- python中的choices函数_用choices给命令行参数设置范围
argparse模块的add_argument函数,有一个choices参数,我们可以通过此参数来给命令行参数的取值设置一个任意的范围.在命令行参数取值范围小而且有限的情况下,此方法还是很方便的. 下 ...
最新文章
- 创建Cocos2d-x 3.x项目以及项目结构简要说明
- php 华为语音通话,语音通知API_语音通话 VoiceCall_API参考_语音通知API_华为云
- android ImageButton设置背景图片无法显示
- 关于Linux网卡调优之:RPS (Receive Packet Steering)
- Java字节流的使用
- Linux进程实践(5) --守护进程
- c++中enum 如何使用(转)
- matlab选择语句函数,Matlab基本语句和基本函数
- ds哈希查找--链地址法_Hash冲突之开放地址法
- 网络流量分类方法调研
- html 制作箭头,怎么使用html制作箭头?制作箭头代码分享!
- nrf52840烧录提示错误原因和解决办法
- 拆掉思维里的墙-摘抄
- SAP PS 第15节 预算管理
- AI 上当,“苹果”变 “iPod”
- 用python对excel进行数据处理与分析操作
- 选择云服务器主要看那方面的参数和性能
- ROS中启动超声波雷达节点
- linux汇编 lea,汇编语言lea指令使用方法解析
- 【C++游戏引擎Easy2D】想做游戏,这三个功能少不了(time+renderer+logger)
热门文章
- PyTorch Data Parrallel数据并行
- 基于自动驾驶车辆的NVIDIA-TensorRT推理实时优化
- 可以控制到多低(功率)?
- 传感器标定两篇顶会论文解析
- HarmonyOS 怎样打印log/日志的打印
- ValueError: invalid literal for int() with base 10: “ ”
- 字符串转 Json 数组
- ecplise 工具字体大小的调整
- ubuntu之路——day8.1 深度学习优化算法之mini-batch梯度下降法
- 《人件集》阅读笔记第一篇