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...