pyTorch深度學習多層感知機的實現(xiàn)
激活函數(shù)
前兩節(jié)實現(xiàn)的傳送門
pyTorch深入學習梯度和Linear Regression實現(xiàn)析
前兩節(jié)實現(xiàn)的linear model 和 softmax model 是單層神經(jīng)網(wǎng)絡,只包含一個輸入層和一個輸出層,因為輸入層不對數(shù)據(jù)進行transformation,所以只算一層輸出層。
多層感知機(mutilayer preceptron)加入了隱藏層,將神經(jīng)網(wǎng)絡的層級加深,因為線性層的串聯(lián)結果還是線性層,所以必須在每個隱藏層之后添加激活函數(shù),即增加model的非線性能力,使得model的function set變大。
ReLU,Sigmoid, tanh是三個常見的激活函數(shù),分別做出它們的函數(shù)圖像以及導數(shù)圖像。
#畫圖使用 def xyplot(x,y,name,size): plt.figure(figsize=size) plt.plot(x.detach().numpy(),y.detach().numpy()) plt.xlabel('x') plt.ylabel(name+'(x)') plt.show()
#relu x = torch.arange(-8,8,0.01,requires_grad=True) y = x.relu() xyplot(x,y,'relu')
y.sum().backward() xyplot(x,x.grad,'grad of relu')
其它兩個激活函數(shù)的圖像畫法類似,分別為x.sigmoid(),x.tanh()
多層感知機的PyTorch實現(xiàn)
實際上多層感知機不過是在linear變換之后添加relu操作,在output layer進行softmax操作
def relu(x): return torch.max(input=x,others,other=torch.tensor(0.0))
max這個方法除了返回tensor中的最大值,還有和maximum函數(shù)一樣的作用,將input和other進行element-wise的比較,返回二者中的最大值,shape不變。
class MulPeceptron(nn.Module): def __init__(self,in_features,out_features): super().__init__() self.fc = nn.Linear(in_features=in_features,out_features=256) self.out = nn.Linear(in_features=256,out_features=out_features) def forward(self,t): t = t.flatten(start_dim=1) t = self.fc(t) t = F.relu(t) t = self.out(t) return t
這里就不從零開始實現(xiàn)了,因為softmax和linear model手寫過以后,這個只是增加了一個矩陣乘法和一個ReLU操作
以上就是pytorch深度學習多層感知機的實現(xiàn)的詳細內(nèi)容,更多關于pytorch實現(xiàn)多層感知機的資料請關注腳本之家其它相關文章!
相關文章
Python安裝Numpy出現(xiàn)異常信息簡單解決辦法
在安裝Python的Numpy包時,可能會遇到路徑警告或包源超時的問題,首先,如果出現(xiàn)包源超時,可以嘗試更換為國內(nèi)的鏡像源,如清華大學鏡像源,其次,如果在安裝完成后提示將某個路徑添加到PATH環(huán)境變量,按照提示操作即可消除異常,需要的朋友可以參考下2024-09-09python groupby函數(shù)實現(xiàn)分組后選取最值
這篇文章主要介紹了python groupby函數(shù)實現(xiàn)分組后選取最值,文章圍繞主題相關資料展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下2022-06-06