深度學習 基於Keras的手寫體識別

2021-09-04 17:13:39 字數 2841 閱讀 6769

from keras import models

from keras import layers

from keras.datasets import mnist

# 搭建網路

network = models.sequential(

)network.add(layers.dense(

512, activation=

'relu'

, input_shape=(28

*28,)

))network.add(layers.dense(

10,activation=

'softmax'))

# 返回由10個概率值組成的陣列

# 編譯網路

network.

compile

(optimizer=

'rmsprop'

, loss=

'categorical_crossentropy'

, metrics=

['accuracy'])

# 載入資料

(train_images, train_labels)

,(test_images, test_labels)

= mnist.load_data(

)# 對資料進行預處理

train_images = train_images.reshape(

60000,28

*28)train_images.astype(

'float32')/

255test_images = test_images.reshape(

10000,28

*28)test_images = test_images.astype(

'float32')/

255# 準備標籤 -- one-hot編碼

from keras.utils import to_categorical

train_labels = to_categorical(train_labels)

test_labels = to_categorical(test_labels)

print

(train_labels[0]

)# array([0., 0., 0., 0., 0., 1., 0., 0., 0., 0.], dtype=float32)

# 開始訓練網路:擬合資料

network.fit(train_images, train_labels, epochs=

10, batch_size=

128)

'''epoch 1/10

60000/60000 [******************************] - 2s 39us/step - loss: 5.3171 - acc: 0.6697

epoch 2/10

60000/60000 [******************************] - 2s 39us/step - loss: 5.2466 - acc: 0.6743

epoch 3/10

60000/60000 [******************************] - 2s 39us/step - loss: 5.2882 - acc: 0.6716

epoch 4/10

60000/60000 [******************************] - 2s 38us/step - loss: 5.2737 - acc: 0.6726

epoch 5/10

60000/60000 [******************************] - 2s 38us/step - loss: 5.2659 - acc: 0.6730

epoch 6/10

60000/60000 [******************************] - 2s 38us/step - loss: 5.2511 - acc: 0.6740

epoch 7/10

60000/60000 [******************************] - 2s 38us/step - loss: 5.2200 - acc: 0.6758

epoch 8/10

60000/60000 [******************************] - 2s 38us/step - loss: 5.2329 - acc: 0.6751

epoch 9/10

60000/60000 [******************************] - 2s 37us/step - loss: 5.2335 - acc: 0.6750

epoch 10/10

60000/60000 [******************************] - 2s 37us/step - loss: 5.2414 - acc: 0.6746

'''

案例中訓練5輪即可達到98.9%的精度,我實際用起來效果並不是很好,還沒看**有不同。

訓練完後,直接用於**:

test_loss, test_acc = network.evaluate(test_images, test_labels)

print

('test_acc: '

, test_acc)

'''10000/10000 [******************************] - 1s 52us/step

test_acc: 0.6772

'''

重點還是在於回顧keras的使用,算是乙個簡單的模板,後續再豐富使用場景。

end.

Keras入門級實戰 MNIST手寫體識別

手寫體識別 這裡要解決的問題是,將手寫數字的灰度影象 28 畫素 28 畫素 劃分到 10 個類別 中 0 9 這個資料集包含 60 000 張訓練影象和 10 000 張測試圖 像,由美國國家標準與技術研究院 national institute of standards and technolo...

Matlab深度學習實踐之手寫體識別(含詳細注釋)

matlab這幾年在人工智慧這塊兒也越做越好了,最近為了熟悉matlab如何搭建神經網路,自己做了乙個手寫體識別實驗,記錄一下。實驗任務非常簡單,網路搭的也非常隨意,不合理的地方也懶得改,旨在走通matlab搭建神經網路的流程。首先,資料集為mnist資料集 我已經把資料按類別分好,分為train和...

深度學習 Keras實現手寫訓練

基於keras對mnist手寫資料集進行訓練 使用兩層神經網路 from keras.datasets import mnist import keras 深度學習框架 import keras.models 模型 from keras.models import sequential 神經網路 f...