torch.nn
pytorch中文文檔鏈接:torch.nn
在__init__()函數里定義,定義的是一個類:
torch.nn.functional
pytorch中文文檔鏈接:torch.nn.functional
在__forward()__函數里定義,定義的是一個函數:
兩者的區別
torch.nn中是一個定義的類,以class xx來定義的,可以提取變化的學習參數。
torch.nn.functional是一個函數,由def function( )定義,是一個固定的運算公式。
深度學習中會有很多權重是在不斷更新的,所以需要采用類的方式,以確保能在參數發生變化時仍能使用我們之前定好的運算步驟。因此如果模型有可學習的參數,應該使用nn.Module,否則兩個沒有區別。但是簡單的計算不需要新建一個類來做,所以使用nn.functional定義函數就可以。
即:層內有variable的情況用nn定義,否則用nn.functional定義。