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])