亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Tensorflow2.1實現Fashion圖像分類示例詳解

 更新時間:2022年11月17日 16:59:34   作者:我是王大你是誰  
這篇文章主要為大家介紹了Tensorflow2.1實現Fashion圖像分類示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

實現思路和詳細解讀

1. 獲取 Fashion 數據、處理數據

(1)本次實踐項目用到的是 Fashion 數據集,包含 10 個類別的服飾灰度圖片,共 70000 張,每張圖片展示一件衣物,每張圖片都是低分辨率的 28x28 像素(其實就是28*28的整數矩陣)。部分效果如下:

本次實踐中我們對數據集進行訓練集和測試集的劃分,使用 60000 張圖片來訓練模型,使用 10000 張圖片來評估模型對服飾圖片的分類的準確程度。

直接通過 tensorflow 內置的接口函數從網絡上下載數據集,其中 (train_images, train_labels) 分別是訓練集中的圖片和標簽,(test_images, test_labels) 分別是測試集中的圖片和標簽。

fashion = tf.keras.datasets.fashion_mnist
(train_images, train_labels), (test_images, test_labels) = fashion.load_data()

(2)這里主要是使用列表來保存數據集中出現過的所有衣服種類的名字。

class_names = ['T-shirt/top', 'Trouser', 'Pullover', 'Dress', 'Coat', 'Sandal', 'Shirt', 'Sneaker', 'Bag', 'Ankle boot']

(3)定義一個函數,主要用來顯示某張照片。

def showImage(image):
    plt.figure()
    plt.imshow(image, cmap=plt.cm.binary)
    plt.colorbar()
    plt.grid(False)
    plt.show()

(4)這里主要展示訓練集中第一張原始圖片的樣子,我們可以看到每張圖片都是低分辨率的 28x28 像素(其實就是28*28的矩陣數字),而且每個像素是在 0-255 之間的數字

showImage(train_images[0])  

效果如下:

因為每張圖片的每個像素都是 0-255 之間的整數,所以我們?yōu)榱四P陀柧毜募涌焓諗?,將所有的圖片都進行歸一化操作。

train_images = train_images / 255.0
test_images = test_images / 255.0

這里主要展示訓練集中第一張原始圖片的樣子經過歸一化操作的結果,可以看到每個像素點都是 0-1 之間的小數。

showImage(train_images[0])

效果如下:

2. 使用 tensorflow 2.1 搭建模型

(1)因為每張圖片的輸入是 28*28 的像素點,所以第一層的是輸入設置為 input_shape=(28, 28) ,輸出的是一個 784 維的向量,該操作可以看作是將 input_shape 多維數組中的值,重新拼接到一起整合成了一個一維數組。

(2)第二層、第三層都是通過激活函數 relu 的非線性變化,輸出一個 64 維向量的全連接層操作,當然這個網絡結構的層數、激活函數、每層的輸出維度可以自行隨意調整,其大小會影響最后的模型評估的指標,理論上結構越復雜效果越好,但是訓練速度越慢,而且這也會引起過擬合的現象,這個度的把握需要不斷通過輸出的指標來進行調整。

(3)第三層是輸出一個 10 維度的全連接層操作,其實就是該輸入圖片分別屬于這十個類別的對應的概率分布。

model = tf.keras.Sequential([
    tf.keras.layers.Flatten(input_shape=(28, 28)),
    tf.keras.layers.Dense(64, activation='relu'),
    tf.keras.layers.Dense(64, activation='relu'),
    tf.keras.layers.Dense(10)
])

3. 配置并編譯模型

(1)這里我們選擇了 Adam 優(yōu)化器,這是一個比較成熟且廣泛使用的優(yōu)化器。

(2)這里的損失函數我們選擇了比較常見的交叉熵 SparseCategoricalCrossentropy 。

(3)這里我們選用了最為常用的模型評估指標準確率 accuracy。

model.compile(optimizer='adam',
              loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),
              metrics=['accuracy'])

4. 訓練模型

(1)我們使用訓練數據的圖片和標簽來對模型進行訓練,并且設置 epochs 為 5 ,也就是將所有的訓練集從頭到尾反復訓練 5 次,如果模型還沒有收斂那你也可以把 epochs 的值設置的大一些,配合較為復雜的網絡結構,最后模型在訓練階段的準確率應該能達到 98% 以上。

(2)在模型的訓練期間,命令行會顯示模型整體損失值和準確率評估指標的情況,這些都是 tensorflow 內部函數寫好的輸出格式,你也可以自己寫代碼改變。

model.fit(train_images, train_labels, epochs=5)

訓練過程輸出如下所示:

Train on 60000 samples
Epoch 1/5
60000/60000 [==============================] - 5s 78us/sample - loss: 0.5140 - accuracy: 0.8180
Epoch 2/5
60000/60000 [==============================] - 4s 73us/sample - loss: 0.3724 - accuracy: 0.8654
Epoch 3/5
60000/60000 [==============================] - 4s 74us/sample - loss: 0.3388 - accuracy: 0.8763
Epoch 4/5
60000/60000 [==============================] - 4s 70us/sample - loss: 0.3165 - accuracy: 0.8831
Epoch 5/5
60000/60000 [==============================] - 4s 74us/sample - loss: 0.2985 - accuracy: 0.8902 

5. 評估模型

(1)這里我們使用測試數據來對模型進行評估,評估的指標也就是之前規(guī)定的準確率。

(2)verbose=2 只是為了規(guī)定結果輸出形式,可以選擇 0、1、2 中的任意一個 。

loss, acc = model.evaluate(test_images,  test_labels, verbose=2)
print('Test accuracy:%f, Test loss:%f'%(acc, loss))

結果輸出如下所示,表明所訓練的模型在測試集的評估下準確率能達到 0.8725 :

10000/1 - 1s - loss: 0.2279 - accuracy: 0.8725
Test accuracy:0.872500, Test loss:0.352148

6. 使用模型進行預測

(1)上面模型在預測每張圖片時最后輸出的都是一個 10 維的雜亂無章的浮點數數組,為了保證輸出的結果是被人容易理解的,我們在上面模型的的最后加上了一層 Softmax 。

(2)Softmax 的功能很簡單,就是將這 10 個雜亂無章的浮點數,轉化成 10 個概率,每個概率值在 0-1 之間,這 10 個概率的和為 1 ,這樣我們取其中最大概率的值對應的衣服類別作為我們預測的結果。

model_by_softmax = tf.keras.Sequential([model,  tf.keras.layers.Softmax()])
predictions = model_by_softmax.predict(test_images)
predict_for_one_image = predictions[3]
predict_for_one_image

輸出概率分布如下所示:

array([4.1939876e-07, 9.9996161e-01, 8.4085507e-08, 3.7719459e-05,
       3.1557637e-08, 1.0500006e-13, 1.5945717e-07, 1.3569163e-13,
       1.8028586e-09, 4.5183642e-11], dtype=float32)

(3)查看一張測試圖片在這 10 個衣服類別中的概率分布,我們發(fā)現 9.9996161e-01 最大,表明該圖片成為第二類衣服款式的概率最大。

(4)我們可以輸出預測的衣服種類,通過查找最大概率對應的衣服種類,發(fā)現該圖片被預測的衣服類別是 Trouser 。

class_names[np.argmax(predict_for_one_image)]

輸出結果如下:

'Trouser'

(5)我們將原始圖片繪制出來發(fā)現確實是一條褲子,說明模型預測正確。

showImage(test_images[3])

展示效果如下:

以上就是Tensorflow2.1實現Fashion圖像分類示例詳解的詳細內容,更多關于Tensorflow Fashion圖像分類的資料請關注腳本之家其它相關文章!

相關文章

  • Python 實現兩個服務器之間文件的上傳方法

    Python 實現兩個服務器之間文件的上傳方法

    今天小編就為大家分享一篇Python 實現兩個服務器之間文件的上傳方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-02-02
  • Python 數據化運營之KMeans聚類分析總結

    Python 數據化運營之KMeans聚類分析總結

    這篇文章主要介紹了Python 數據化運營KMeans聚類相關的一些總結,感興趣的話一起來閱讀下文吧
    2021-08-08
  • 使用ChatGPT來自動化Python任務

    使用ChatGPT來自動化Python任務

    這篇文章主要介紹了使用ChatGPT來自動化Python任務的相關資料,需要的朋友可以參考下
    2022-12-12
  • Python的批量遠程管理和部署工具Fabric用法實例

    Python的批量遠程管理和部署工具Fabric用法實例

    這篇文章主要介紹了Python的批量遠程管理和部署工具Fabric用法,實例分析了Fabric的功能與具體使用方法,需要的朋友可以參考下
    2015-01-01
  • C# DataGridView行列轉換的具體實現

    C# DataGridView行列轉換的具體實現

    本文主要介紹了C# DataGridView行列轉換的具體實現,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-02-02
  • Python 使用 consul 做服務發(fā)現示例詳解

    Python 使用 consul 做服務發(fā)現示例詳解

    這篇文章主要介紹了Python 使用 consul 做服務發(fā)現示例詳解,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-03-03
  • python超簡單解決約瑟夫環(huán)問題

    python超簡單解決約瑟夫環(huán)問題

    這篇文章主要介紹了python超簡單解決約瑟夫環(huán)問題的方法,詳細描述的約瑟夫環(huán)問題的描述與Python解決方法,需要的朋友可以參考下
    2015-05-05
  • 使用python實現離散時間傅里葉變換的方法

    使用python實現離散時間傅里葉變換的方法

    這篇文章主要介紹了使用python實現離散時間傅里葉變換的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-09-09
  • Python全棧之學習MySQL(1)

    Python全棧之學習MySQL(1)

    這篇文章主要為大家介紹了Python全棧之MySQL,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-01-01
  • Python餅狀圖的繪制實例

    Python餅狀圖的繪制實例

    今天小編就為大家分享一篇關于Python餅狀圖的繪制實例,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-01-01

最新評論