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

TensorFlow邏輯回歸處理MNIST數據集

本節基于回歸學習對 MNIST 數據集進行處理,但將添加一些 TensorBoard 總結以便更好地理解 MNIST 數據集。

MNIST由https://www.tensorflow.org/get_started/mnist/beginners提供。

大部分人已經對 MNIST 數據集很熟悉了,它是機器學習的基礎,包含手寫數字的圖像及其標簽來說明它是哪個數字。

對于邏輯回歸,對輸出 y 使用獨熱(one-hot)編碼。因此,有 10 位表示輸出,每位的值為 1 或 0,獨熱意味著對于每個圖片的標簽 y,10 位中僅有一位的值為 1,其余的為 0。

因此,對于手寫數字 8 的圖像,其編碼值為 [0000000010]:

具體做法

  1. 導入所需的模塊:


     
  2. 可以從模塊 input_data 給出的 TensorFlow 示例中獲取 MNIST 的輸入數據。該 one_hot 標志設置為真,以使用標簽的 one_hot 編碼。這產生了兩個張量,大小為 [55000,784] 的 mnist.train.images 和大小為 [55000,10] 的 mnist.train.labels。mnist.train.images 的每項都是一個范圍介于 0 到 1 的像素強度:


     
  3. 在 TensorFlow 圖中為訓練數據集的輸入 x 和標簽 y 創建占位符:


     
  4. 創建學習變量、權重和偏置:


     
  5. 創建邏輯回歸模型。TensorFlow OP 給出了 name_scope("wx_b"):


     
  6. 訓練時添加 summary 操作來收集數據。使用直方圖以便看到權重和偏置隨時間相對于彼此值的變化關系。可以通過 TensorBoard Histogtam 選項卡看到:


     
  7. 定義交叉熵(cross-entropy)和損失(loss)函數,并添加 name scope 和 summary 以實現更好的可視化。使用 scalar summary 來獲得隨時間變化的損失函數。scalar summary 在 Events 選項卡下可見:


     
  8. 采用 TensorFlow GradientDescentOptimizer,學習率為 0.01。為了更好地可視化,定義一個 name_scope:


     
  9. 為變量進行初始化:


     
  10. 組合所有的 summary 操作:


     
  11. 現在,可以定義會話并將所有的 summary 存儲在定義的文件夾中:


     
  12. 經過 30 個周期,準確率達到了 86.5%;經過 50 個周期,準確率達到了 89.36%;經過 100 個周期,準確率提高到了 90.91 %。

解讀分析

這里使用張量 tensorboard--logdir=garphs 運行 TensorBoard。在瀏覽器中,導航到網址 localhost:6006 查看 TensorBoard。該模型圖如下:
 

 
在 Histogram 選項卡下,可以看到權重(weights)和偏置(biases)的直方圖:


 
權重和偏置的分布如下:


 
可以看到,隨著時間的推移,偏置和權重都發生了變化。在該示例中,根據 TensorBoard 中的分布可知偏置變化的范圍更大。在 Events 選項卡下,可以看到 scalar summary,即本示例中的交叉熵。下圖顯示交叉熵損失隨時間不斷減少:

推薦閱讀

如果你有興趣了解更多相關知識,可以查看下面這些資源:
關于 TensorBoard 與可視化:https://www.tensorflow.org/get_started/summaries_and_tensorboard
關于統計與概率的課程:https://www.khanacademy.org/math/statistics-probability/describing-relationships-quantitative-data
更多關于回歸的細節:https://onlinecourses.science.psu.edu/stat501/node/250

精美而實用的網站,提供C語言C++STLLinuxShellJavaGo語言等教程,以及socketGCCviSwing設計模式JSP等專題。

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

底部Logo