前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >pytorch 调用forward 的具体流程

pytorch 调用forward 的具体流程

作者头像
狼啸风云
修改2022-09-02 22:28:38
1.2K0
修改2022-09-02 22:28:38
举报

forward方法的具体流程:

以一个Module为例:

  1. 调用module的call方法
  2. module的call里面调用module的forward方法
  3. forward里面如果碰到Module的子类,回到第1步,如果碰到的是Function的子类,继续往下
  4. 调用Function的call方法
  5. Function的call方法调用了Function的forward方法
  6. Function的forward返回值
  7. module的forward返回值
  8. 在module的call进行forward_hook操作,然后返回值

上述中“调用module的call方法”是指nn.Module 的__call__方法。定义__call__方法的类可以当作函数调用。也就是说,当把定义的网络模型model当作函数调用的时候就自动调用定义的网络模型的forward方法。nn.Module 的__call__方法部分源码如下所示:

代码语言:javascript
复制
def __call__(self, *input, **kwargs):
    result = self.forward(*input, **kwargs)
    for hook in self._forward_hooks.values():
        #将注册的hook拿出来用
        hook_result = hook(self, input, result)

    return result 
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-05-03 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档