深度學習筆記3torch實現多層感知器

2021-07-23 04:36:21 字數 1665 閱讀 8364

**:

--網路結構1-3-3-1,隱含層為兩層,每層都有3個神經元,輸入層和輸出層都有乙個神經元

model = nn.sequential() 

--model現在是乙個容器,要往這個容器中新增神經網路層(輸入層、隱含層、輸出層)來構成多層感知器(神經網路)

--容器要新增的第一層為輸入層,1個輸入, 3個輸出

model:add(nn.linear(1,3))

--然後我們在他後面新增乙個sigmoid層,它的節點個數會自動和前一層的輸出個數保持一致。這裡的--sigmoid函式是用來將資料歸到0-1之間的數

--sigmoid函式有個缺點,當遠0點資料時,sigmoid會輸出為1,導數接近為0

model:add(nn.sigmoid())

--接下來我們新增第一和第二隱藏層中間的線性連線,輸入是3,輸出也是3。

model:add(nn.linear(3,3))

--作用一樣

model:add(nn.sigmoid()) 

--增加線性層,3個輸入乙個輸出 

model:add(nn.linear(3,1))

--構建多層感知器的完整**如下

model = nn.sequential()

model:add(nn.mulconstant(0.1)) --在輸入進入之前先乘以0.1,縮小訓練值  

model:add(nn.linear(1,3))

model:add(nn.sigmoid())

model:add(nn.linear(3,3))

model:add(nn.sigmoid())

model:add(nn.linear(3,1))

model:add(nn.mulconstant(50000)) --在輸入之後乘以50000,對**資料的縮小

--預設的權值優化是梯度下降法,訓練速度很慢。其實torch已經給我們提供了各種先進的優化演算法,都--放在optim這個庫里。我們在檔案的頭部新增包含optim庫

require 'optim'

--模型的引數拿出來看看,w是權值,1x3+3+3x3+3+3x1+1=22,dl_dw是w對loss的偏導,而且這兩個--都是引用,也就是值的變化會影響模型的引數

w, dl_dw = model:getparameters()

feval = function(w_new)  

if w ~= w_new then w:copy(w_new) end 

--導數初始為0 

dl_dw:zero()  

price_predict = model:forward(month_train)  

loss = criterion:forward(price_predict, price_train)  

model:backward(month_train, criterion:backward(price_predict, price_train))  

--返回損失和梯度

return loss, dl_dw  

end  

--引數設定,學習率是0.01

params = 分割每一組資料,{}中的第乙個引數是橫座標點,第二個引數是縱座標點

ifi%10==0 then

gnuplot.plot(, )

endend

深度學習筆記4torch的rnn

本節 位址 require rnn require gnuplot batchsize 8 mini batch rho 100 back propagation through time hiddensize 20 r nn.recurent hiddensize,nn.linear 1,hidd...

深度學習筆記之Andrew Ng(3)

week3 本週進入了新的話題,神經網路,不過還暫時離不開我們之前學習的邏輯回歸,我的理解是,標準神經網路使用了乙個更大範圍的神經網路,為什麼這麼說呢,我們來一步步的開始學習。神經網路概述 那麼神經網路,是由乙個個神經元構成的,長成這個樣 之前我們學習過了preceptron 感知器 事實上就是乙個...

Scrapy學習筆記 3 深度優先和廣度優先演算法

1.url捷信 2.深度優先演算法 廣度優先演算法及其實現 scrapy預設通過深度優先演算法實現 深度優先輸出 a b d e i c f g h 遞迴實現 廣度優先輸出 a b c d e f g h i 佇列實現 深度優先演算法實現 遞迴實現 def depth tree tree node ...