pyTorch深度學(xué)習(xí)多層感知機(jī)的實(shí)現(xiàn)
激活函數(shù)
前兩節(jié)實(shí)現(xiàn)的傳送門(mén)
pyTorch深度學(xué)習(xí)softmax實(shí)現(xiàn)解析
pyTorch深入學(xué)習(xí)梯度和Linear Regression實(shí)現(xiàn)析
前兩節(jié)實(shí)現(xiàn)的linear model 和 softmax model 是單層神經(jīng)網(wǎng)絡(luò),只包含一個(gè)輸入層和一個(gè)輸出層,因?yàn)檩斎雽硬粚?duì)數(shù)據(jù)進(jìn)行transformation,所以只算一層輸出層。
多層感知機(jī)(mutilayer preceptron)加入了隱藏層,將神經(jīng)網(wǎng)絡(luò)的層級(jí)加深,因?yàn)榫€性層的串聯(lián)結(jié)果還是線性層,所以必須在每個(gè)隱藏層之后添加激活函數(shù),即增加model的非線性能力,使得model的function set變大。
ReLU,Sigmoid, tanh是三個(gè)常見(jiàn)的激活函數(shù),分別做出它們的函數(shù)圖像以及導(dǎo)數(shù)圖像。
#畫(huà)圖使用
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')

其它兩個(gè)激活函數(shù)的圖像畫(huà)法類(lèi)似,分別為x.sigmoid(),x.tanh()
多層感知機(jī)的PyTorch實(shí)現(xiàn)
實(shí)際上多層感知機(jī)不過(guò)是在linear變換之后添加relu操作,在output layer進(jìn)行softmax操作
def relu(x): return torch.max(input=x,others,other=torch.tensor(0.0))
max這個(gè)方法除了返回tensor中的最大值,還有和maximum函數(shù)一樣的作用,將input和other進(jìn)行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
這里就不從零開(kāi)始實(shí)現(xiàn)了,因?yàn)閟oftmax和linear model手寫(xiě)過(guò)以后,這個(gè)只是增加了一個(gè)矩陣乘法和一個(gè)ReLU操作
以上就是pytorch深度學(xué)習(xí)多層感知機(jī)的實(shí)現(xiàn)的詳細(xì)內(nèi)容,更多關(guān)于pytorch實(shí)現(xiàn)多層感知機(jī)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
在django中實(shí)現(xiàn)頁(yè)面倒數(shù)幾秒后自動(dòng)跳轉(zhuǎn)的例子
今天小編就為大家分享一篇在django中實(shí)現(xiàn)頁(yè)面倒數(shù)幾秒后自動(dòng)跳轉(zhuǎn)的例子,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-08-08
一篇文章帶你搞定Ubuntu中打開(kāi)Pycharm總是卡頓崩潰
這篇文章主要介紹了一篇文章帶你搞定Ubuntu中打開(kāi)Pycharm總是卡頓崩潰,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11
使用Django中的filter方法進(jìn)行數(shù)據(jù)查詢的基本操作
在 Django 中,QuerySet 的 filter() 方法是一個(gè)強(qiáng)大的工具,用于從數(shù)據(jù)庫(kù)中檢索數(shù)據(jù)并根據(jù)指定的條件進(jìn)行篩選,在本文中,我們將介紹如何使用 filter() 方法來(lái)執(zhí)行各種類(lèi)型的數(shù)據(jù)查詢操作,需要的朋友可以參考下2024-05-05
Python編程求質(zhì)數(shù)實(shí)例代碼
這篇文章主要介紹了Python編程求質(zhì)數(shù)實(shí)例代碼,對(duì)求200,1000和100000以內(nèi)的質(zhì)數(shù)進(jìn)行了測(cè)試,小編覺(jué)得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下2018-01-01
Python將多個(gè)list合并為1個(gè)list的方法
今天小編就為大家分享一篇Python將多個(gè)list合并為1個(gè)list的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-06-06
Python使用urllib2模塊抓取HTML頁(yè)面資源的實(shí)例分享
這篇文章主要介紹了Python使用urllib2模塊抓取HTML頁(yè)面資源的實(shí)例分享,將要抓取的頁(yè)面地址寫(xiě)在單獨(dú)的規(guī)則列表中方便組織和重復(fù)使用,需要的朋友可以參考下2016-05-05
Python對(duì)字符串實(shí)現(xiàn)去重操作的方法示例
字符串去重是python中字符串操作常見(jiàn)的一個(gè)需求,最近在工作中就又遇到了,所以下面這篇文章主要給大家介紹了關(guān)于Python對(duì)字符串實(shí)現(xiàn)去重操作的相關(guān)資料,文中給出了詳細(xì)的介紹,需要的朋友可以參考借鑒,下面來(lái)一起看看吧。2017-08-08
詳談pandas中agg函數(shù)和apply函數(shù)的區(qū)別
下面小編就為大家分享一篇詳談pandas中agg函數(shù)和apply函數(shù)的區(qū)別,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-04-04

