(基於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類提供了更加簡單的方法來搭建網絡數據

待更新