(基于Pytorch的深度学习)笔记1:建立模型用到的类:_init_和self、super(Model, self).__init__()

 

Python 中的_init_和self:网络

拿如下一段代码做为例子:函数

class LinearNet(nn.Module):
    def __init__(self,n_feature):
        super(LinearNet, self).__init__()
        self.linear = nn.Linear(n_feature,1)
        def forward(self, x):
            y = self.linear(x)
            return y

定义一个类:class LinearNet(nn.Module),利用__init__()把须要必须绑定的属性强制填写进去,如上面给的n_feature,注意到__init__()的第一个参数永远是self,其表示建立的实例自己,此时咱们也能够看到,新建的LinearNet类拥有一个父类,即nn.Module,那么,其就能够调用如下函数来经过初始化父类属性以达到初始化自身继承了父类的某些属性;这样一来,做为nn.Module的子类(LinearNet)就无需再初始化那一部分属性了,只需初始化新加的元素;code

super(Model, self).__init__()

 super(Model, self).__init__(),其表明对继承的那个父类的属性进行初始化,首先找到LinearNet的父类A,而后把LinearNet的对象self转换为父类A的对象,而后被转换的父类的对象A调用本身的__init__函数。对象

再次回到上面那段代码,几点说明:首先,类LinearNet调用__init__()初始化一部分继承父类的属性;继承

其此增长了新的参数n_feature,linear,以及将他初始化;it

增长了一个新函数forward(),有一个和输入参数x,此时x就至关于n_featrue这个位置,返回y,见到你理解y此时就是表明一个nn.Linear(n_featrue,1)这样的线性回归的神经网络模型class

调用方式:神经网络

net = LinearNet(2)

对LinearNet实例化一个对象net,输入参数为整形数据2,即表明net为一个2输入1输出的网络模型;方法

以上就至关于搭建了一个简易模型,有点为繁琐,因此nn类提供了更加简单的方法来搭建网络数据

待更新