日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

TensorFlow反向传播算法实现

發布時間:2023/11/28 生活经验 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 TensorFlow反向传播算法实现 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

TensorFlow反向傳播算法實現
反向傳播(BPN)算法是神經網絡中研究最多、使用最多的算法之一,用于將輸出層中的誤差傳播到隱藏層的神經元,然后用于更新權重。

學習 BPN 算法可以分成以下兩個過程:

  1. 正向傳播:輸入被饋送到網絡,信號從輸入層通過隱藏層傳播到輸出層。在輸出層,計算誤差和損失函數。
  2. 反向傳播:在反向傳播中,首先計算輸出層神經元損失函數的梯度,然后計算隱藏層神經元損失函數的梯度。接下來用梯度更新權重。

這兩個過程重復迭代直到收斂。

前期準備
首先給網絡提供 M 個訓練對(X,Y),X 為輸入,Y 為期望的輸出。輸入通過激活函數 g(h) 和隱藏層傳播到輸出層。輸出 Yhat 是網絡的輸出,得到 error=Y-Yhat。其損失函數 J(W) 如下:

其中,i 取遍所有輸出層的神經元(1 到 N)。然后可以使用 J(W) 的梯度并使用鏈式法則求導,來計算連接第 i 個輸出層神經元到第 j 個隱藏層神經元的權重 Wij 的變化:

這里,Oj 是隱藏層神經元的輸出,h 表示隱藏層的輸入值。這很容易理解,但現在怎么更新連接第 n 個隱藏層的神經元 k 到第 n+1 個隱藏層的神經元 j 的權值 Wjk?過程是相同的:將使用損失函數的梯度和鏈式法則求導,但這次計算 Wjk:

現在已經有方程了,看看如何在 TensorFlow 中做到這一點。在這里,還是使用 MNIST 數據集(http://yann.lecun.com/exdb/MNIST/)。

具體實現過程
現在開始使用反向傳播算法:

  1. 導入模塊:

  2. 加載數據集,通過設置 one_hot=True 來使用獨熱編碼標簽:

  3. 定義超參數和其他常量。這里,每個手寫數字的尺寸是 28×28=784 像素。數據集被分為 10 類,以 0 到 9 之間的數字表示。這兩點是固定的。學習率、最大迭代周期數、每次批量訓練的批量大小以及隱藏層中的神經元數量都是超參數。可以通過調整這些超參數,看看是如何影響網絡表現的:

  4. 需要 Sigmoid 函數的導數來進行權重更新,所以定義:

  5. 為訓練數據創建占位符:

  6. 創建模型:

  7. 定義權重和偏置變量:

  8. 為正向傳播、誤差、梯度和更新計算創建計算圖:

  9. 定義計算精度 accuracy 的操作:

  10. 初始化變量:

  11. 執行圖:

  12. 結果如下:

解讀分析
在這里,訓練網絡時的批量大小為 10,如果增加批量的值,網絡性能就會下降。另外,需要在測試數據集上檢測訓練好的網絡的精度,這里測試數據集的大小是 1000。

單隱藏層多層感知機在訓練數據集上的準確率為 84.45,在測試數據集上的準確率為 92.1。這是好的,但不夠好。MNIST 數據集被用作機器學習中分類問題的基準。接下來,看一下如何使用 TensorFlow 的內置優化器影響網絡性能。

總結

以上是生活随笔為你收集整理的TensorFlow反向传播算法实现的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。