美文网首页
Pytorch 之 forward函数

Pytorch 之 forward函数

作者: Allard_c205 | 来源:发表于2021-08-19 09:31 被阅读0次

在模型类定义的时候,定义forward函数,其中变量形式(self,x)

在使用Pytorch的时候,模型训练时,不需要调用forward函数,只需要在实例化一个对象中传入对应的参数就可以自动调用forward函数。

model(data) & model.forward(data) 等价,因为在class Module中调用了__call__函数,forward函数在call函数中调用了,示例(红色圈起来的是连接的关键点):

说明,在给类实例化赋值时,'土豪‘变量就是call中的param,也是forward中的input_,也就是在红色圈内,在call函数下就将其参数传给了forward变量。【总结一句话:是在call中调用了forward函数】  Student()中的变量对应__init__函数中的变量。

运行结果如下:( forward函数返回的是‘input_’参数变量,所以最终input_param结果值是input_的赋值结果)

学习Pytorch,一个前提是知道Python  class中的__call__ (使得类的实例化对象具有类似函数的功能)和__init__方法(类的初始化函数,类似于C++的构造函数),这里主要介绍__call__函数。

Python中,凡是可以用()直接应用到自身并执行,都称为可调用对象,可调用对象包括自定义的函数,Python内置函数以及类实例对象。

__call__函数: 对于可调用对象,’名称()‘等价于’名称.__call__()'的简写。 所以开讲到的类实例化为一个对象model,并传入参数(data),就相当于:model.__call__(data),又因为调用call函数就直接调用了forward函数,所以直接对类示例化的对象传入训练参数,就直接调用了forward函数,对数据进行了前向传播的训练学习。

类中的函数会自动链接__call__函数,也就是会自动调用call函数。而类的属性则不能调用call函数。

Pytorch,主要也是按照__call__,__init__.forward三个函数实现网络层之间的架构的

Python中callable()用于检查一个对象是否是可调用的,返回TRUE,obj仍然可能调用失败,但返回FALSE,obj绝对不会调用成功。   对于函数,方法,lambda函式,类以及实现了__call__方法的类实例,都返回TRUE。

相关文章

网友评论

      本文标题:Pytorch 之 forward函数

      本文链接:https://www.haomeiwen.com/subject/khigbltx.html