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?相关推荐

  1. Python中单个下划线“ _”变量的用途是什么?

    这段代码中_ after for的含义是什么? if tbh.bag:n = 0for _ in tbh.bag.atom_set():n += 1 #1楼 下划线_在Python中被视为" ...

  2. Python中单个下划线“_”变量的目的是什么?

    在Python中,下划线_被视为" 我不关心 "或" 丢失 "变量 python解释器将最后一个表达式值存储到名为的特殊变量中_. >>> 1 ...

  3. eval在python中是什么意思_如何在Python中使用eval ?

    Python中的 eval是什么? 在Python中,我们有许多内置方法,这些方法对于使Python成为所有人的便捷语言至关重要,而eval是其中一种.eval函数的语法如下: eval(expres ...

  4. python中的下划线_讲解

    python中,下划线 "_""_"" \_" 不管是单独作为变量名或者作为变量名的前缀或者后缀,是有特殊含义的,下面简要的来总结一下. 1 ...

  5. Python中Button按钮组件常用的属性及参数设置

    Python中Button按钮组件常用的属性及参数设置 本篇文章中小编给大家介绍Button按钮组件的相关常用的属性以及参数的设置. 一. 常用属性使用语法 变量=Button(父容器(根窗口),参数 ...

  6. 在python中逻辑量有_(五)我的魔法竟有了一丝逻辑

    学习目标 了解魔法世界中的结构表现--缩进 了解魔法世界的逻辑判断--if 了解魔法世界的多次逻辑判断--ifelse嵌套 了解魔法世界中的逻辑运算--且 and 与或 or 一.了解魔法世界中的逻辑 ...

  7. 2019.5.8_此书真乃宝书也_从定位参数到仅限关键字参数

    <摘自流畅的Python> 此书真乃宝书也,虽说还是有点儿没懂 从定位参数到仅限关键字参数 Python最好的特性之一是提供了极为灵活的参数处理机制,而且Python3进一步提供了仅限关键 ...

  8. python中ndim是什么_使用Python中的ndim和shape属性获取darray数据的维度、长度、形状和其他参数,python,ndarray,等...

    我们在描述一个多维数组的时候,经常会用到两个参数:维度(dimension)和形状(shape),以二维数组为例,我们可以用矩阵来形象地联想这两个参数,对于矩阵,显然我们最常见的矩阵是二维的,所以他的 ...

  9. python中的choices函数_用choices给命令行参数设置范围

    argparse模块的add_argument函数,有一个choices参数,我们可以通过此参数来给命令行参数的取值设置一个任意的范围.在命令行参数取值范围小而且有限的情况下,此方法还是很方便的. 下 ...

最新文章

  1. 创建Cocos2d-x 3.x项目以及项目结构简要说明
  2. php 华为语音通话,语音通知API_语音通话 VoiceCall_API参考_语音通知API_华为云
  3. android ImageButton设置背景图片无法显示
  4. 关于Linux网卡调优之:RPS (Receive Packet Steering)
  5. Java字节流的使用
  6. Linux进程实践(5) --守护进程
  7. c++中enum 如何使用(转)
  8. matlab选择语句函数,Matlab基本语句和基本函数
  9. ds哈希查找--链地址法_Hash冲突之开放地址法
  10. 网络流量分类方法调研
  11. html 制作箭头,怎么使用html制作箭头?制作箭头代码分享!
  12. nrf52840烧录提示错误原因和解决办法
  13. 拆掉思维里的墙-摘抄
  14. SAP PS 第15节 预算管理
  15. AI 上当,“苹果”变 “iPod”
  16. 用python对excel进行数据处理与分析操作
  17. 选择云服务器主要看那方面的参数和性能
  18. ROS中启动超声波雷达节点
  19. linux汇编 lea,汇编语言lea指令使用方法解析
  20. 【C++游戏引擎Easy2D】想做游戏,这三个功能少不了(time+renderer+logger)

热门文章

  1. PyTorch Data Parrallel数据并行
  2. 基于自动驾驶车辆的NVIDIA-TensorRT推理实时优化
  3. 可以控制到多低(功率)?
  4. 传感器标定两篇顶会论文解析
  5. HarmonyOS 怎样打印log/日志的打印
  6. ValueError: invalid literal for int() with base 10: “ ”
  7. 字符串转 Json 数组
  8. ecplise 工具字体大小的调整
  9. ubuntu之路——day8.1 深度学习优化算法之mini-batch梯度下降法
  10. 《人件集》阅读笔记第一篇