PyTorch里面的torch.nn.Parameter()

在刷官方Tutorial的時(shí)候發(fā)現(xiàn)了一個(gè)用法self.v = torch.nn.Parameter(torch.FloatTensor(hidden_size)),看了官方教程里面的解釋也是云里霧里,于是在棧溢網(wǎng)看到了一篇解釋,并做了幾個(gè)實(shí)驗(yàn)才算完全理解了這個(gè)函數(shù)。首先可以把這個(gè)函數(shù)理解為類型轉(zhuǎn)換函數(shù),將一個(gè)不可訓(xùn)練的類型Tensor轉(zhuǎn)換成可以訓(xùn)練的類型parameter并將這個(gè)parameter綁定到這個(gè)module里面(net.parameter()中就有這個(gè)綁定的parameter,所以在參數(shù)優(yōu)化的時(shí)候可以進(jìn)行優(yōu)化的),所以經(jīng)過類型轉(zhuǎn)換這個(gè)self.v變成了模型的一部分,成為了模型中根據(jù)訓(xùn)練可以改動(dòng)的參數(shù)了。使用這個(gè)函數(shù)的目的也是想讓某些變量在學(xué)習(xí)的過程中不斷的修改其值以達(dá)到最優(yōu)化。

出現(xiàn)這個(gè)函數(shù)的地方

concat注意力機(jī)制中,權(quán)值V是不斷學(xué)習(xí)的所以要是parameter類型。
通過做下面的實(shí)驗(yàn)發(fā)現(xiàn),linear里面的weightbias就是parameter類型,且不能夠使用tensor類型替換,還有linear里面的weight甚至可能通過指定一個(gè)不同于初始化時(shí)候的形狀進(jìn)行模型的更改。
做的實(shí)驗(yàn)

self.v被綁定到模型中了,所以可以在訓(xùn)練的時(shí)候優(yōu)化

與torch.tensor([1,2,3],requires_grad=True)的區(qū)別,這個(gè)只是將參數(shù)變成可訓(xùn)練的,并沒有綁定在module的parameter列表中。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容