TensorFlow(Keras) 一步步實現MNIST手寫體圖片分類 (1) Coursera深度學習教程分享

Coursera Tensorflow和ML/DL 機器學習/深度學習教程,分享:TensorFlow一步步手寫體Mnist識別<一>

TensorFlow和Andrew Ng 的 DeepLearning.AI合作推出了一個簡單的TensorFlow入門教程。但是看了一下,這簡直是Keras入門教程,對於筆者來說簡直就像回頭看小學數學,但溫故而知新可以爲師矣。因爲Keras的作者加入了TensorFlow,自然Keras也融合了進了TensorFlow,但是從筆者的項目經歷來看,Keras和TensorFlow還是有區別的,很多接口之間還不能相互轉化。

這裏分享一下簡單地教程,簡單明瞭介紹如何一步步使用TensorFlow構建深度學習模型:

(推薦閱讀時間1min)

建議手動Follow下代碼:

推薦大家使用Jupyter,可以參考我寫的博客如何搭建Jupyter.

Mnist手寫體數據,x_train中每個數據都是[28, 28]的圖片,如下:
在這裏插入圖片描述

import tensorflow as tf
from tensorflow import keras
from keras import Sequential
from keras.layers import Dense, Conv2D, MaxPool2D, Flatten

# 導入數據
mnist = tf.keras.datasets.mnist
(x_train, y_train),(x_test, y_test) = mnist.load_data()

x_train.shape, x_test.shape
# ((60000, 28, 28), (10000, 28, 28))

記得把數據集歸一化,以利於神經網絡的訓練。
X_train, X_test = x_train/ 255., x_test/ 255.

模型部分

model = Sequential()
model.add(Flatten())
model.add(Dense(128, activation='relu'))
model.add(Dense(10, activation='softmax'))

模型編譯model.compile,這裏使用Adam優化器,使用交差熵作爲目標函數,評價指標是accuracy,簡寫’acc’
模型訓練,model.fit.

model.compile('adam', loss='sparse_categorical_crossentropy', metrics=['acc'])
model.fit(X_train, y_train, batch_size=64, epochs=3, validation_data=(X_test, y_test))

這個數據很簡單,隨便丟個模型,效果都很好。
Train on 60000 samples, validate on 10000 samples
Epoch 1/3
60000/60000 [] - 2s 38us/step - loss: 0.3041 - acc: 0.9142 - val_loss: 0.1679 - val_acc: 0.9508
Epoch 2/3
60000/60000 [
] - 2s 33us/step - loss: 0.1369 - acc: 0.9606 - val_loss: 0.1121 - val_acc: 0.9660
Epoch 3/3
60000/60000 [==============================] - 2s 33us/step - loss: 0.0953 - acc: 0.9719 - val_loss: 0.0987 - val_acc: 0.9707

用這段代碼可以打印出來手寫體的一張圖片:
import matplotlib.pylab as plt
plt.imshow(x_train[2])

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章