TensorFlow 實現 Mnist 資料集的多分類邏輯迴歸模型
“
多分類邏輯迴歸基於邏輯迴歸(Logistic Regression,LR)和softMax實現,其在多分類分類任務中應用廣泛,本篇文章基於tf實現多分類邏輯迴歸,使用的資料集為Mnist。
”
個人網站: http://thinkgamer.cn/
CSDN部落格:https://blog.csdn.net/gamer_gyt
微博: https://weibo.com/5352480017
微信公眾號:資料與演算法聯盟(DataAndAlgorithm)
多分類邏輯迴歸的基礎概要和在Spark上的實現可參考:
-
多分類邏輯迴歸(Multinomial Logistic Regression)
-
多分類實現方式介紹和在Spark上實現多分類邏輯迴歸(Multinomial Logistic Regression)
本篇文章涉及到的tf相關介面函式及釋義如下:
tf.nn.softmax
Softmax 在機器學習和深度學習中有著非常廣泛的應用。尤其在處理多分類(C > 2)問題,分類器最後的輸出單元需要Softmax 函式進行數值處理。關於Softmax 函式的定義如下所示:
其中,Vi 是分類器前級輸出單元的輸出。i 表示類別索引,總的類別個數為 C。Si 表示的是當前元素的指數與所有元素指數和的比值。Softmax 將多分類的輸出數值轉化為相對概率,更容易理解和比較。我們來看下面這個例子。
一個多分類問題,C = 4。線性分類器模型最後輸出層包含了四個輸出值,分別是:
經過Softmax處理後,數值轉化為相對概率:
很明顯,Softmax 的輸出表徵了不同類別之間的相對概率。我們可以清晰地看出,S1 = 0.8390,對應的概率最大,則更清晰地可以判斷預測為第1類的可能性更大。Softmax 將連續數值轉化成相對概率,更有利於我們理解。
實際應用中,使用 Softmax 需要注意數值溢位的問題。因為有指數運算,如果 V 數值很大,經過指數運算後的數值往往可能有溢位的可能。所以,需要對 V 進行一些數值處理:即 V 中的每個元素減去 V 中的最大值。
tf中的softmax函式介面為:
-
logits:非空張量
-
axis:將被執行的softmax緯度,預設為None
-
name:名稱,預設為None
-
dim:axis的別名,預設為None
tf.log()
計算元素的自然對數
tf.reduce_sum()
求和
tf.reduce_mean()
求平均數
tf.argmax()
返回tensor 列表中最大值索引號,eg:
tf.cast()
資料格式轉換,eg:
最終實現程式碼
執行程式碼輸出為:
從最終的結果可以看出:
-
loss一直在下降,說明模型是擬合的
-
訓練集和測試機的精確率都很高,模型效果表現不錯
-
當然也可以通過調節batch_size,epochs等引數進行效果調優
關於【資料與演算法聯盟】
專注於推薦系統,深度學習,機器學習,資料探勘,雲端計算,人工智慧,架構和程式設計等技術乾貨的分享和探討,偶爾會推送一些福利,文字,攝影和遊記,掃碼關注,不再孤單。
更多幹貨,掃碼關注
熱
相關文章
深度學習中的epochs、batch_size、iterations詳解
轉載 | 十圖詳解tensorflow資料讀取機制(附程式碼)
歡迎投稿,凡是投稿一經錄用者,贈送技術圖書和相關學習資料
國內各大網際網路公司,可內推
關注公眾號,加小編微信,拉你進
“ 資料與演算法交流群”