C語言中文網 目錄
TensorFlow
1 TensorFlow是什么
2 TensorFlow安裝和下載
3 第一個TensorFlow程序
4 TensorFlow程序結構
5 TensorFlow常量、變量和占位符
6 TensorFlow矩陣基本操作
7 TensorFlow TensorBoard數據流圖可視化
8 TensorFlow代碼自動升級為1.0版本
9 TensorFlow XLA
10 TensorFlow指定CPU和GPU設備
11 TensorFlow與深度學習
12 TensorFlow常用Python擴展包
13 回歸算法有哪些
14 TensorFlow損失函數
15 TensorFlow優化器
16 TensorFlow csv文件讀取數據
17 TensorFlow實現簡單線性回歸
18 TensorFlow實現多元線性回歸
19 TensorFlow邏輯回歸處理MNIST數據集
20 感知機與神經網絡
21 TensorFlow常用激活函數(6種)
22 TensorFlow實現單層感知機
23 TensorFlow實現反向傳播算法
24 TensorFlow多層感知機實現MINIST分類
25 TensorFlow多層感知機函數逼近
26 TensorFlow超參數
27 TensorFlow Keras
28 CNN卷積神經網絡
29 三維卷積神經網絡預測MNIST數字
30 卷積神經網絡分類圖片
31 遷移學習
32 DeepDream網絡
33 TensorFlow實現文本情感分析
34 VGG網絡濾波器
35 VGGNet、ResNet、Inception和Xception
36 預建深度學習提取特征及實現
37 TensorFlow實現InceptionV3
38 TensorFlow WaveNet聲音合成
39 TensorFlow視頻分類(6種方法)
40 RNN循環神經網絡
41 神經機器翻譯(seq2seq RNN)
42 注意力機制(基于seq2seq RNN)
43 RNN訓練模型并生成文本
44 RNN循環神經網絡實現預測比特幣價格
45 主成分分析法(PCA)
46 k均值聚類算法
47 SOM自組織映射法
48 受限玻爾茲曼機訓練
49 推薦系統的實現(基于RBM)
50 基于DBN實現情緒檢測
51 自編碼器
52 標準自編碼器
53 稀疏自編碼器
54 去燥自編碼器
55 卷積自編碼器
56 堆疊自編碼器
57 強化學習
58 OpenAI Gym安裝和使用
59 全連接神經網絡實現玩Pac-Man游戲
60 Q learning實現Cart-Pole平衡游戲
61 DQN算法(深度Q網絡)
62 David Silver策略梯度算法
63 深度學習在移動端的應用
64 Android移動端部署TensorFlow mobile
65 iPhone移動端部署TensorFlow mobile
66 移動端優化TensorFlow代碼
67 GAN生成式對抗網絡
68 GAN生成式對抗網絡虛構MNIST圖像
69 DCGAN虛構MNIST圖像
70 DCGAN虛構名人面孔和其他數據集
71 VAE變分自編碼器
72 CapsNet膠囊網絡
73 TensorFlow分布式
74 TensorFlow GPU的安裝和使用
75 TensorFlow分布式
76 TensorFlow分布式訓練MNIST分類器
77 TensorFlow Serving運行Docker容器
78 TensorFlow分布式在谷歌云平臺運行
79 TensorFlow分布式在谷歌CloudML運行
80 TensorFlow分布式在Microsoft Azure上運行
81 TensorFlow分布式在Amazon AWS上運行
首頁 > TensorFlow 閱讀:188

受限玻爾茲曼機(RBM)訓練詳解

受限玻爾茲曼機(RBM)是一個兩層神經網絡,第一層被稱為可見層,第二層被稱為隱藏層,因為網絡只有兩層,所以又被稱為淺層神經網絡。

該模型最早由 Paul Smolensky 于 1986 年提出(他稱其為 Harmony 網絡),此后 Geoffrey Hinton 在 2006 年提出了對比散度(Contrastive Divergence,CD)方法對 RBM 進行訓練??梢妼又械拿總€神經元與隱藏層中的所有神經元都相連接,但是同一層的神經元之間無連接,所有的神經元輸出狀態只有兩種。

RBM 可以用于降維、特征提取和協同過濾,RBM 的訓練可以分成三部分:正向傳播、反向傳播和比較。下面看看 RBM 的表達式。

正向傳播:可見層(V)已知,利用權重(W)和偏置(c)采樣出隱藏層(h0),根據下式的隨機概率(σ 是隨機概率),隱藏單元開啟或關閉:


 
反向傳播:反過來,隱藏層h0已知,通過相同的權重 W 采樣出可見層,但是偏置 c 不同,以此重建輸入。采樣概率為:


 
這兩個傳遞過程重復 k 步或直到收斂,研究表明,k=1 就已經能給出很好的結果,所以此處設置 k=1。

RBM 模型是一個基于能量的模型,對于一組給定的狀態(可見向量 V 和隱藏向量)可構造能量函數:


 
與每個可見向量 V 相關聯的是自由能量,一個單獨配置的能量,要想與其他含有 V 的配置的能量相等,則:


 
使用對比發散度目標函數,即 Mean(F(Voriginal))-Mean(F(Vconstructed)),則權重的變化由下式給出:


 
其中,η 是學習率,偏置 b 和 c 也存在類似表達式。

具體做法

  1. 導入模塊:


     
  2. 編寫一個類 RBM 來完成主要工作。__init__ 中將構建完整的計算圖、正向傳播、反向傳播和目標函數,此處使用 TensorFlow 內置的優化器來更新權重和偏置:


     
  3. 在 RBM 類中定義 fit() 方法,在 __init__ 中聲明所有的操作之后,訓練操作就是簡單地在會話中調用 train_op。我們使用批量訓練:


     
  4. 定義其他輔助函數計算 logit 誤差,并從網絡中返回重建的圖像:


     
  5. 加載 MNIST 數據集:


     
  6. 在 MNIST 數據集上訓練 RBM:


     
  7. 損失函數隨著訓練次數的變化如下:


     
由于能夠重建圖像,RBM 可用于從現有數據中生成更多的數據。通過下面的畫圖代碼對比原始和重建的 MNIST 圖像:


 
結果如下:

精美而實用的網站,提供C語言、C++、STL、Linux、Shell、Java、Go語言等教程,以及socket、GCC、vi、Swing、設計模式、JSP等專題。

Copyright ?2011-2018 biancheng.net, 陜ICP備15000209號

底部Logo
极速pk10开户