1. 程式人生 > 其它 >Tensorflow學習009——softmax多分類

Tensorflow學習009——softmax多分類

2.8 softmax分類

前面學的對數機率迴歸解決的是二分類問題,對於多分類問題,可以使用softmax函式,它是對數機率再N個可能不同的值上的推廣
神經網路的原始輸出並不是一個概率值,實質上只是對輸入的數值做了複雜的甲醛和非線性處理之後的一個值而已,而softmax層就可以將這個輸出變成概率分佈


圖2-17
如圖2-17所示,是softmax的計算公式,softmax要求每個樣本必須屬於某個類別,且所有可能的樣本均被覆蓋,softmax樣本分量之和為1,當只有兩個類別時,與對數機率迴歸完全相同
在tf.keras中,對於多分類問題使用categorical_crossentropy和sparse_categorical_crossentropy(當標籤是數字的時候)來計算softmax交叉熵

先介紹一下需要使用的資料集。
Fashion MnIST時經典MNIST資料集的簡易替換,MNIST資料集包含手寫數字(0,1,2等)的影象,這些影象的格式與本節課中使用的Fashion MNIST服飾影象的格式相同
Fashion MNIST比常規的MNIST手寫資料集更具有挑戰性,這兩個資料集都比較小,用於驗證某個演算法能否如期正常執行,是測試和除錯程式碼的良好起點。
Fashion MNIST資料集包含了70000張灰度影象,涵蓋了10個類別。
將使用60000張影象訓練網路,並使用10000張影象評估經過學習的網路分類影象的準確率,可以從Tensorflow直接訪問Fashion MNIST,只需要匯入和載入資料即可。

點選檢視程式碼
import tensorflow as tf
(train_image,train_label),(test_image,test_label) = tf.keras.datasets.fashion_mnist.load_data()

執行程式碼

點選檢視程式碼
import tensorflow as tf
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
#載入資料集,第一次執行會進行下載,會比較慢一點
(train_image,train_label),(test_image,test_label) = tf.keras.datasets.fashion_mnist.load_data()
#train_image的形狀是(60000,28,28) train_label的形狀是(60000,)
#train_label使用數值0,1.。。9表示類別
#對資料繼續寧歸一化
train_image = train_image / 255
test_image = test_image / 255

model = tf.keras.Sequential()
#相比較之前寫的程式碼,這裡的每個輸入都是2維的(28,28),所以需要flatten對其進行展平,將其對映成一維資料,長度為28*28
model.add(tf.keras.layers.Flatten(input_shape=(28,28)))
model.add(tf.keras.layers.Dense(128,activation='relu'))
model.add(tf.keras.layers.Dense(10,activation='softmax')) #使用softmax機會將結果轉換為概率
model.compile(optimizer='adam',loss='sparse_categorical_crossentropy',metrics=['acc'])
model.fit(train_image,train_label,epochs=5)
print(model.evaluate(test_image,test_label))

獨熱編碼:
當前有三類,如果北京,則標籤為[1,0,0]如果時上海是[0,1,0]。這樣只有相關類才是1就是獨熱編碼的方式
train_label_onehot = tf.keras.utils.to_categorical(train_label)
將數字編碼換成獨熱編碼
按照獨熱編碼方式預測的結果標籤也是獨熱編碼方式,我們可以直接使用np.argmax(predict)將預測結果轉換為id順序標籤


作者:孫建釗
出處:http://www.cnblogs.com/sunjianzhao/
本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段宣告,且在文章頁面明顯位置給出原文連線,否則保留追究法律責任的權利。