日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

用Keras进行手写字体识别(MNIST数据集)

發布時間:2025/4/16 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 用Keras进行手写字体识别(MNIST数据集) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

數據

首先加載數據

from keras.datasets import mnist(train_images, train_labels), (test_images, test_labels) = mnist.load_data()

接下來,看看這個數據集的基本情況:

train_images.shape

(60000, 28, 28)

len(train_labels)

60000

train_labels

array([5, 0, 4, …, 5, 6, 8], dtype=uint8)

test_images.shape

(10000, 28, 28)

len(test_labels)

10000

test_labels

array([7, 2, 1, …, 4, 5, 6], dtype=uint8)

網絡構架

from keras import models from keras import layersnetwork = models.Sequential() network.add(layers.Dense(512, activation='relu', input_shape=(28 * 28,))) network.add(layers.Dense(10, activation='softmax'))

Keras可以幫助我們實現一層一層的連接起來,在本例中的網絡包含2個Dense層,他們是密集連接(也叫全連接)的神經層。第二層是一個10路softmax層,他將返回一個由10個概率值(總和為1)組成的數組。每個概率值表示當前數字圖像屬于10個數字類別中的某一個的概率。

編譯

要想訓練網絡,我們還需要設置編譯步驟的三個參數:

  • 損失函數

  • 優化器(optimizer):基于訓練數據和損失函數來更新網絡的機制

  • 在訓練和測試過程中需要監控的指標(metric):本例只關心精度,即正確分類的圖像所占的比例。

network.compile(optimizer='rmsprop',loss='categorical_crossentropy',metrics=['accuracy'])

圖像數據預處理

在訓練之前,需要對圖像數據預處理,將其變換成網絡要求的形狀,并縮放所有值都在[0,1]區間。比如,之前訓練圖像保存在一個uint8類型的數組中,其形狀為(60000,28, 28),取值范圍為[0, 255]。我們需要將其變換成一個float32數組,其形狀為(60000, 28*28),取值范圍為0-1

train_images = train_images.reshape((60000, 28 * 28)) #把一個圖像變成一列數據用于學習 train_images = train_images.astype('float32') / 255 #astype用于進行數據類型轉換test_images = test_images.reshape((10000, 28 * 28)) test_images = test_images.astype('float32') / 255

訓練

from keras.utils import to_categoricaltrain_labels = to_categorical(train_labels) test_labels = to_categorical(test_labels)network.fit(train_images, train_labels, epochs=5, batch_size=128)

會有一個輸出

看看測試集表現如何:

test_loss, test_acc = network.evaluate(test_images, test_labels)print('test_acc:', test_acc)

我們還可以看某一個具體的圖像顯示情況

digit = train_images[4] import matplotlib.pyplot as plt plt.imshow(digit, cmap = plt.cm.binary) plt.show()

更多精彩內容,歡迎關注我的微信公眾號:數據瞎分析

總結

以上是生活随笔為你收集整理的用Keras进行手写字体识别(MNIST数据集)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。