#深入探究# PyTorch中的 forward() 方法详解

23 篇文章 11 订阅
3 篇文章 0 订阅

在PyTorch的很多函数中都会包含 forward() 函数,但是也没见哪里调用过forward() 函数,不免让人产生疑惑
想要了解 forward() 函数的作用,首先要了解 Python 中的 __ call __ 函数,
__ call __ 函数的作用是能够让python中的类能够像方法一样被调用,通过下边的例子来理解一下:

class X(object):
    def __init__(self, a, b, range):
        self.a = a
        self.b = b
        self.range = range
    def __call__(self, a, b):
        self.a = a
        self.b = b
        print('__call__ with ({}, {})'.format(self.a, self.b))
    def __del__(self, a, b, range):
        del self.a
        del self.b
        del self.range

调用:

>>> xInstance = X(1, 2, 3)
>>> xInstance(1,2)
__call__ with (1, 2)
  1. xInstance = X(1, 2, 3) 这句代码实例化了xInstance类型的对象X,在实例化时调用了__init__(self, a, b, range)函数;
  2. xInstance(1,2)代码使用类+参数的语法 直接调用了 __call__(self, a, b)函数,而不需要使用X.__call__(self, a, b)语法,这就是__call__(self, a, b)函数的作用,能够让python中的类能够像方法一样被调用

因为 PyTorch 中的大部分方法都继承自 torch.nn.Module,而 torch.nn.Module 的__call__(self)函数中会返回 forward()函数 的结果,因此PyTroch中的 forward()函数等于是被嵌套在了__call__(self)函数中;因此forward()函数可以直接通过类名被调用,而不用实例化对象

  • 35
    点赞
  • 67
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

energy_百分百

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值