Pytorch?linear?多維輸入的參數(shù)問題
問題: 由于 在輸入lstm 層 每個batch 做了根據(jù)輸入序列最大長度做了padding,導(dǎo)致每個 batch 的 length 不同。 導(dǎo)致輸出 長度不同 。如:(batch, length, output_dim): (12,128,10),(12,111,10). 但是輸入 linear 層的時候沒有出現(xiàn)問題。
網(wǎng)站解釋:
官網(wǎng) pytorch linear:

- Input:(*, H_{in})(∗,Hin?)where*∗means any number of dimensions including none andH_{in} = \text{in\_features}Hin?=in_features. 任意維度 number 理解有歧義 (a)number. k可以理解三維,四維。。。 (b) 可以理解 為某一維度的數(shù) 。
- Output:(*, H_{out})(∗,Hout?)where all but the last dimension are the same shape as the input andH_{out} = \text{out\_features}Hout?=out_features.
代碼解釋:
分別 用三維 和二維輸入數(shù)組,查看他們參數(shù)數(shù)目是否一樣。
import torch
x = torch.randn(128, 20) # 輸入的維度是(128,20)
m = torch.nn.Linear(20, 30) # 20,30是指維度
output = m(x)
print('m.weight.shape:\n ', m.weight.shape)
print('m.bias.shape:\n', m.bias.shape)
print('output.shape:\n', output.shape)
# ans = torch.mm(input,torch.t(m.weight))+m.bias 等價于下面的
ans = torch.mm(x, m.weight.t()) + m.bias
print('ans.shape:\n', ans.shape)
print(torch.equal(ans, output))output:
m.weight.shape: torch.Size([30, 20]) m.bias.shape: torch.Size([30]) output.shape: torch.Size([128, 30]) ans.shape: torch.Size([128, 30]) True
x = torch.randn(128, 30,20) # 輸入的維度是(128,30,20)
m = torch.nn.Linear(20, 30) # 20,30是指維度
output = m(x)
print('m.weight.shape:\n ', m.weight.shape)
print('m.bias.shape:\n', m.bias.shape)
print('output.shape:\n', output.shape)ouput: m.weight.shape: torch.Size([30, 20]) m.bias.shape: torch.Size([30]) output.shape: torch.Size([128, 30, 30])
結(jié)果:
(128,30,20),和 (128,20) 分別是如 nn.linear(30,20) 層。
weight.shape 均為: (30,20)
linear() 參數(shù)數(shù)目只和 input_dim ,output_dim 有關(guān)。
weight 在源碼的定義, 沒找到如何計算多維input的代碼。

到此這篇關(guān)于Pytorch linear 多維 輸入的參數(shù)的文章就介紹到這了,更多相關(guān)Pytorch多維 輸入內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
解決Python 異常TypeError: cannot concatenate ''str'' and ''int''
這篇文章主要介紹了解決Python 異常TypeError: cannot concatenate 'str' and 'int' objects,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-04-04
推薦一款高效的python數(shù)據(jù)框處理工具Sidetable
這篇文章主要為大家介紹推薦一款高效的python數(shù)據(jù)框處理工具Sidetable,文章詳細的講解了Sidetable的安裝及用法,有需要的朋友可以借鑒參考下,希望能夠有所幫助2021-11-11
Python?3.11.0下載安裝并使用help查看模塊信息的方法
本文給大家介紹Python?3.11.0下載安裝并使用help查看模塊信息的相關(guān)知識,首先給大家講解了Python?3.11.0下載及安裝緊接著介紹了在命令行使用help查看模塊信息的方法,感興趣的朋友跟隨小編一起看看吧2022-11-11
python的staticmethod與classmethod實現(xiàn)實例代碼
這篇文章主要介紹了python的staticmethod與classmethod實現(xiàn)實例代碼,分享了相關(guān)代碼示例,小編覺得還是挺不錯的,具有一定借鑒價值,需要的朋友可以參考下2018-02-02
Python實現(xiàn)統(tǒng)計文本文件字數(shù)的方法
這篇文章主要介紹了Python實現(xiàn)統(tǒng)計文本文件字數(shù)的方法,涉及Python針對文本文件讀取及字符串轉(zhuǎn)換、運算等相關(guān)操作技巧,需要的朋友可以參考下2017-05-05

