温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

如何在pytorch中使用forward 方法

发布时间:2021-02-26 16:39:28 来源:亿速云 阅读:608 作者:Leah 栏目:开发技术

这篇文章将为大家详细讲解有关如何在pytorch中使用forward 方法,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

forward 的使用

class Module(nn.Module):  def __init__(self):   super(Module, self).__init__()   # ......     def forward(self, x):   # ......   return x data = ..... #输入数据 # 实例化一个对象 module = Module() # 前向传播 module(data)  # 而不是使用下面的 # module.forward(data)

实际上

module(data)

是等价于

module.forward(data)

forward 使用的解释

等价的原因是因为 python calss 中的__call__和__init__方法.

class A():  def __call__(self):   print('i can be called like a function')   a = A() a()

out:

i can be called like a function

__call__里调用其他的函数

class A():  def __call__(self, param):      print('i can called like a function')   print('传入参数的类型是:{} 值为: {}'.format(type(param), param))     res = self.forward(param)   return res    def forward(self, input_):   print('forward 函数被调用了')     print('in forward, 传入参数类型是:{} 值为: {}'.format( type(input_), input_))   return input_  a = A()  input_param = a('i') print("对象a传入的参数是:", input_param)

out:

i can called like a function

传入参数的类型是:<class ‘str'> 值为: i

forward 函数被调用了

in forward, 传入参数类型是:<class ‘str'> 值为: i

对象a传入的参数是: i

补充:Pytorch 模型中nn.Model 中的forward() 前向传播不调用 解释

在pytorch 中没有调用模型的forward()前向传播,只实列化后把参数传入。

定义模型

class Module(nn.Module):  def __init__(self):   super(Module, self).__init__()   # ......    def forward(self, x):   # ......   return x data = ..... #输入数据 # 实例化一个对象 module = Module() # 前向传播 直接把输入传入实列化 module(data)  #没有使用module.forward(data)

实际上module(data) 等价于module.forward(data)

等价的原因是因为 python calss 中的__call__ 可以让类像函数一样调用

当执行model(x)的时候,底层自动调用forward方法计算结果

class A():  def __call__(self):   print('i can be called like a function')   a = A() a() >>>i can be called like a function

在__call__ 里可调用其它的函数

class A():  def __call__(self, param):      print('我在__call__中,传入参数',param)     res = self.forward(param)   return res    def forward(self, x):   print('我在forward函数中,传入参数类型是值为: ',x)   return x   a = A() y = a('i')  >>> 我在__call__中,传入参数 i  >>>我在forward函数中,传入参数类型是值为: i print("传入的参数是:", y)  >>>传入的参数是: i

关于如何在pytorch中使用forward 方法就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI