91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Pytorch梯度下降優化的示例分析

發布時間:2022-03-04 11:49:30 來源:億速云 閱讀:154 作者:小新 欄目:開發技術

這篇文章主要介紹了Pytorch梯度下降優化的示例分析,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

一、激活函數

1.Sigmoid函數

函數圖像以及表達式如下:

Pytorch梯度下降優化的示例分析

通過該函數,可以將輸入的負無窮到正無窮的輸入壓縮到0-1之間。在x=0的時候,輸出0.5

通過PyTorch實現方式如下:

Pytorch梯度下降優化的示例分析

2.Tanh函數

在RNN中比較常用,由sigmoid函數變化而來。表達式以及圖像如下圖所示:

Pytorch梯度下降優化的示例分析

該函數的取值是-1到1,導數是:1-Tanh**2。

通過PyTorch的實現方式如下:

Pytorch梯度下降優化的示例分析

3.ReLU函數

該函數可以將輸入小于0的值截斷為0,大于0的值保持不變。因此在小于0的地方導數為0,大于0的地方導數為1,因此求導計算非常方便。

Pytorch梯度下降優化的示例分析

通過PyTorch的實現方式如下:

Pytorch梯度下降優化的示例分析

二、損失函數及求導

通常,我們使用mean squared error也就是均方誤差來作為損失函數。

1.autograd.grad

torch.autograd.grad(loss, [w1,w2,...])

輸入的第一個是損失函數,第二個是參數的列表,即使只有一個,也需要加上中括號。

Pytorch梯度下降優化的示例分析

Pytorch梯度下降優化的示例分析

我們可以直接通過mse_loss的方法,來直接創建損失函數。

在torch.autograd.grad中輸入損失函數mse,以及希望求導的對象[w],可以直接求導。

Pytorch梯度下降優化的示例分析

注意:我們需要在創建w的時候,需要添加requires_grad=True,我們才能對它求導。

也可以通過w.requires_grad_()的方法,為其添加可以求導的屬性。

Pytorch梯度下降優化的示例分析

Pytorch梯度下降優化的示例分析

2.loss.backward()

該方法是直接在損失函數上面調用的

Pytorch梯度下降優化的示例分析

這個方法不會返回梯度信息,而是將梯度信息保存到了參數中,直接用w.grad就可以查看。

3.softmax及其求導

該函數將差距較大的輸入,轉換成處于0-1之間的概率,并且所有概率和為1。

Pytorch梯度下降優化的示例分析

對softmax函數的求導:

設輸入是a,通過了softmax輸出的是p

Pytorch梯度下降優化的示例分析

注意:當i=j時,偏導是正的,i != j時,偏導是負的。

通過PyTorch實現方式如下:

Pytorch梯度下降優化的示例分析

三、鏈式法則

1.單層感知機梯度

單層感知機其實就是只有一個節點,數據*權重,輸入這個節點,經過sigmoid函數轉換,得到輸出值。根據鏈式法則可以求得梯度。

Pytorch梯度下降優化的示例分析

通過PyTorch可以輕松實現函數轉換以及求導。

Pytorch梯度下降優化的示例分析

2. 多輸出感知機梯度

輸出值變多了,因此節點變多了。但求導方式其實是一樣的。

Pytorch梯度下降優化的示例分析

通過PyTorch實現求導的方式如下:

Pytorch梯度下降優化的示例分析

3. 中間有隱藏層的求導

中間加了隱藏層,只是調節了輸出節點的輸入內容。原本是數據直接輸給輸出節點,現在是中間層的輸出作為輸入,給了輸出節點。使用PyTorch實現方式如下:

Pytorch梯度下降優化的示例分析

4.多層感知機的反向傳播

依舊是通過鏈式法則,每一個結點的輸出sigmoid(x)都是下一個結點的輸入,因此我們通過前向傳播得到每一個結點的sigmoid函數,以及最終的輸出結果,算出損失函數后,即可通過后向傳播依次推算出每一個結點每一個參數的梯度。

下面的DELTA(k)只是將一部分內容統一寫作一個字母來表示,具體推導不再詳述。

Pytorch梯度下降優化的示例分析

四、優化舉例

通過以下函數進行優化。

Pytorch梯度下降優化的示例分析

優化流程:初始化參數→前向傳播算出預測值→得到損失函數→反向傳播得到梯度→對參數更新→再次前向傳播→......

在此案例中,優化流程有一些不同:

優化之前先選擇優化器,并直接把參數,以及梯度輸入進去。

①pred = f(x)根據函數給出預測值,用以后面計算梯度。

②optimizer.zero_grad()梯度歸零。因為反向傳播之后,梯度會自動帶到參數上去(上面有展示,可以調用查看)。

③pred.backward()用預測值計算梯度。

④pred.step()更新參數。

以上步驟循環即可。

Pytorch梯度下降優化的示例分析

感謝你能夠認真閱讀完這篇文章,希望小編分享的“Pytorch梯度下降優化的示例分析”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

土默特左旗| 读书| 明光市| 新平| 河西区| 舟山市| 萝北县| 进贤县| 玉山县| 贡觉县| 南陵县| 武鸣县| 云南省| 泸西县| 突泉县| 梁平县| 马尔康县| 丰镇市| 武乡县| 商城县| 蓝山县| 南和县| 仙居县| 清新县| 郎溪县| 夹江县| 长子县| 安溪县| 资讯| 东莞市| 兴隆县| 藁城市| 永新县| 平潭县| 洛隆县| 木兰县| 黄山市| 和静县| 洞口县| 厦门市| 曲麻莱县|