動手學深度學習打卡筆記1

2021-10-02 20:14:58 字數 2066 閱讀 4376

資料基礎: 張量和梯度

tensor(張量)可以看成是乙個多維陣列。標量是0維張量,向量是1維張量,矩陣則是2維張量。在深度學習中涉及到大量的矩陣和向量的相互計算(向量計算的速度更快),在pytorch中,torch.tensor是儲存和變換資料的主要工具。

除了基本的矩陣向量(同形)的計算之外,對於不同形狀的tensor,會有乙個broadcasting機制。即以最大維度的tensor為基礎複製元素,使兩個tensor形狀相同。例如:

input:

x = torch.arange(1,

3).view(1,

2)print

(x)y = torch.arange(1,

4).view(3,

1)print

(y)print

(x + y)

output:

tensor([[

1,2]

])tensor([[

1],[

2],[

3]])

tensor([[

2,3]

,[3,

4],[

4,5]

])

gradient(梯度)在深度學習的過程中經常被使用,其中很重要的就是對函式求梯度,並通過反向傳播演算法對損失函式進行優化。

需要注意的是,在使用pytorch提供的autograd包執行反向傳播的時候,需要將屬性.requires_grad設定為true,才能進行計算,否則,這些引數將無法利用鏈式法則進行梯度計算,也就無法呼叫.backward()。

線性回歸解決連續值的回歸問題,屬於有監督模型。
線性模型作為深度學習模型中最基礎的模型,可以通過對它的學習而觸類旁通其他一些回歸模型的知識。

它的基本形式為y = ωx + b。

線性回歸整個模型流程大致分為讀取資料、定義模型、初始化模型引數、定義損失函式(mse)、定義優化演算法和訓練模型。

與輸出連續值的線性回歸模型相對,softmax回歸輸出的是類別這樣的離散值。
softmax與線性回歸一樣,將輸入特徵與權重做線性疊加,但是它的輸出值個數等於標籤裡的類別數。為了使輸出的離散值具有直觀意義且可以衡量,在這裡使用softmax運算子。它用指數歸一化的形式使輸出值轉化為值為正且和為1的概率分布。

與邏輯回歸採用相同的損失函式——交叉熵損失函式。

多層感知機相較於線性模型新增了隱藏層,隱藏層和輸出層都是全連線層。同時,隱藏層也設定了權重和偏差,將它的表示式帶入輸出後可以輕易發現聯立後的式子依然是乙個單層神經網路(仿射變換)。

由此,這裡可以引入非線性函式進行變換之後,再作為下乙個全連線層的輸入。這個非線性函式被稱為啟用函式(activation function)。

下面是幾種常用的啟用函式:

relu

sigmoid函式

tanh函式(一般用在生成對抗網路和迴圈神經網路)

relu函式是乙個通用的啟用函式,體現在

1)在神經網路層數較多的時候,最好使用relu函式,relu函式較簡單計算量少,而sigmoid和tanh函式計算量則大很多。例如卷積神經網路和全連線神經網路大都使用relu。

2)由於梯度消失導致訓練收斂速度較慢時,要避免使用sigmoid和tanh函式。

所以,在選擇啟用函式的時候可以先選用relu函式,如果效果不理想再嘗試其他啟用函式。

但是,需要注意的是relu函式只能在隱藏層中使用。用於分類器時,sigmoid函式及其組合通常效果更好。

過擬合指訓練誤差較低但是泛化誤差較大,且二者相差較大的現象。
除了增大資料樣本以外,處理多層感知機神經網路的過擬合問題有兩種方式:l2範數和丟棄法。

l2範數

l2範數正則化也叫權重衰減,它通過懲罰絕對值較大的模型引數為需要學習的模型增加了限制。

丟棄法dropout

對隱藏層使用丟棄法,即丟棄一定概率該層的隱藏單元,丟棄概率為超引數。

當神經網路的層數較多時,模型的數值穩定性容易變差,梯度的計算也容易出現消失或**。

動手學深度學習 打卡01

均方誤差損失函式 l i w,b 1 2 y i y i 2 l mathbf,b frac left hat y right 2,l i w b 21 y i y i 2,小批量隨機梯度下降 mini batch stochastic gradient descent w,b w,b b i b ...

動手學深度學習 打卡02

分詞時用到了split函式 split 通過指定分隔符對字串進行切片,如果引數 num 有指定值,則分隔 num 1 個子字串 str split str num string.count str 為方便模型處理,我們需要將字串轉換為數字。因此我們需要先構建乙個字典,其中的內容將每個詞對映到乙個唯一...

動手學深度學習筆記(1)

機器學習,神經網路是很多領域共同發展的成果。時至今日,絕大多數神經網路都包含以下的核心原則 深度學習從發現到發展,仍能屹立的部分原因 在機器學習的眾多研究方向中,表徵學習關注如何自動找出表示資料的合適方式,以便更好地將輸入變換為正確的輸出。深度學習是具有多級表示的表徵學習方法。在每一級 從原始資料開...