我們今天就先從建立模型開始進行手寫數字辨識,不同於DAY19的,這邊是使用Keras來進行。
from keras.utils import np_utils
import numpy as np
from keras.datasets import mnist
from keras.models import Sequential
from keras.layers import Dense
from keras.layers import Dropout
import matplotlib.pyplot as plt
np.random.seed(10)
(x_train_image,y_train_label),(x_test_image,y_test_label)=mnist.load_data()
x_train=x_train_image.reshape(60000,784).astype('float32')
x_test=x_test_image.reshape(10000,784).astype('float32')
x_train_nor=x_train/255
x_test_nor=x_test/255
y_train_one=np_utils.to_categorical(y_train_label)
y_test_one=np_utils.to_categorical(y_test_label)
第1~8行:宣告引入函式庫
第10行:讀入mnist資料集
第12~13行:將原本28*28的矩陣轉為784個數字。
第15~16行:將數字特徵值標準化。
第18~19行:使用one-hot進行轉換。
model = Sequential()
model.add(Dense(units=256,
input_dim=784,
kernel_initializer='normal',
activation='relu'
))
model.add(Dropout(0.5))
model.add(Dense(units=10,
kernel_initializer='normal',
activation='softmax'
))
第1行:建立一個線性堆疊的模型。
第3~7行:建立輸入以及隱藏層。
第8行:再隱藏層時放棄一些神經元,避免overfitting。
第9~12行:建立輸出層
當你使用keras之後,你去對照前幾篇的程式碼,你發現程式碼的長短變得短很多,也看起來更簡單了。