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 閱讀:161

稀疏自編碼器及TensorFlow實現詳解

< 上一頁標準自編碼器 去燥自編碼器下一頁 >

上一節中的自動編碼機更像是一個識別網絡,只是簡單重構了輸入。而重點應是在像素級重構圖像,施加的唯一約束是隱藏層單元的數量。

有趣的是,像素級重構并不能保證網絡將從數據集中學習抽象特征,但是可以通過添加更多的約束確保網絡從數據集中學習抽象特征。

稀疏自編碼器(又稱稀疏自動編碼機)中,重構誤差中添加了一個稀疏懲罰,用來限定任何時刻的隱藏層中并不是所有單元都被激活。如果 m 是輸入模式的總數,那么可以定義一個參數 ρ_hat,用來表示每個隱藏層單元的行為(平均激活多少次)?;镜南敕ㄊ亲尲s束值 ρ_hat 等于稀疏參數 ρ。具體實現時在原始損失函數中增加表示稀疏性的正則項,損失函數如下:



如果 ρ_hat 偏離 ρ,那么正則項將懲罰網絡,一個常規的實現方法是衡量 ρ 和 ρ_hat 之間的 Kullback-Leiber(KL) 散度。

準備工作

在開始之前,先來看一下 KL 散度 DKL 的概念,它是衡量兩個分布之間差異的非對稱度量,本節中,兩個分布是 ρ 和 ρ_hat。當 ρ 和 ρ_hat 相等時,KL 散度是零,否則會隨著兩者差異的增大而單調增加,KL 散度的數學表達式如下:


 
下面是 ρ=0.3 時的 KL 的散度 DKL 的變化圖,從圖中可以看到,當 ρ_hat=0.3時,DKL=0;而在 0.3 兩側都會單調遞增:

具體做法

  1. 導入必要的模塊:


     
  2. TensorFlow 示例加載 MNIST 數據集:


     
  3. 定義 SparseAutoEncoder 類,除了引入 KL 散度損失之外,它與前面的自動編碼機類非常相似:


     
    將 KL 約束條件添加到損失函數中,如下所示:


     
    其中,alpha 是稀疏約束的權重。該類的完整代碼如下所示:


     
  4. 聲明 SparseAutoEncoder 類的一個對象,調用 fit() 訓練,然后計算重構的圖像:


     
  5. 重構損失均方誤差隨網絡學習的變化圖:




     
  6. 查看重構的圖像:


     
    結果如下:

解讀分析

必須注意到,稀疏自編碼器的主要代碼與標準自動編碼機完全相同,稀疏自編碼器只有一個主要變化——增加了KL散度損失以確保隱藏(瓶頸)層的稀疏性。如果將兩者的重構結果進行比較,則可以看到即使隱藏層中的單元數量相同,稀疏自動編碼機也比標準自動編碼機好很多:


 
在 MNIST 數據集上,標準自動編碼機訓練后的重構損失是 0.022,而稀疏自編碼器是 0.006,由此可見稀疏自編碼器對數據的內在表示學習得更好一些。
< 上一頁標準自編碼器 去燥自編碼器下一頁 >

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

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

底部Logo