TensorFlowMNIST数据集逻辑回归处理
本節基于回歸學習對 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]:
具體做法
導入所需的模塊:
可以從模塊 input_data 給出的 TensorFlow 示例中獲取 MNIST 的輸入數據。該 one_hot 標志設置為真,以使用標簽的 one_hot 編碼。這產生了兩個張量,大小為 [55000,784] 的 mnist.train.images 和大小為 [55000,10] 的 mnist.train.labels。mnist.train.images 的每項都是一個范圍介于 0 到 1 的像素強度:
在 TensorFlow 圖中為訓練數據集的輸入 x 和標簽 y 創建占位符:
創建學習變量、權重和偏置:
創建邏輯回歸模型。TensorFlow OP 給出了 name_scope(“wx_b”):
訓練時添加 summary 操作來收集數據。使用直方圖以便看到權重和偏置隨時間相對于彼此值的變化關系。可以通過 TensorBoard Histogtam 選項卡看到:
定義交叉熵(cross-entropy)和損失(loss)函數,并添加 name scope 和 summary 以實現更好的可視化。使用 scalar summary 來獲得隨時間變化的損失函數。scalar summary 在 Events 選項卡下可見:
采用 TensorFlow GradientDescentOptimizer,學習率為 0.01。為了更好地可視化,定義一個 name_scope:
為變量進行初始化:
組合所有的 summary 操作:
現在,可以定義會話并將所有的 summary 存儲在定義的文件夾中:
經過 30 個周期,準確率達到了 86.5%;經過 50 個周期,準確率達到了 89.36%;經過 100 個周期,準確率提高到了 90.91 %。
解讀分析
這里使用張量 tensorboard–logdir=garphs 運行 TensorBoard。在瀏覽器中,導航到網址 localhost:6006 查看 TensorBoard。該模型圖如下:
在 Histogram 選項卡下,可以看到權重(weights)和偏置(biases)的直方圖:
權重和偏置的分布如下:
可以看到,隨著時間的推移,偏置和權重都發生了變化。在該示例中,根據 TensorBoard 中的分布可知偏置變化的范圍更大。在 Events 選項卡下,可以看到 scalar summary,即本示例中的交叉熵。下圖顯示交叉熵損失隨時間不斷減少:
總結
以上是生活随笔為你收集整理的TensorFlowMNIST数据集逻辑回归处理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: TensorFlow多元线性回归实现
- 下一篇: 感知机神经网络