深度學習|Keras識別MNIST手寫數字(一)

數據和方法

MNIST數據集是收集的手寫字體,爲單色圖像,共有訓練集60000項,測試數據集10000項。
建模方法我們使用最簡單的神經網絡模型,多層感知器(MLP)。

數據下載和處理

數據下載

Keras已經提供了模塊用於下載數據,通過一下代碼即可完成下載。

### 首先導入程序所需要的庫
import numpy as np
import pandas as pd
from keras.utils import np_utils
np.random.seed(10)
from keras.datasets import mnist

(X_train,y_train),(X_test,y_test) = mnist.load_data()   #下載數據

我們可以看下數據的長度。

通過matplotlib繪製圖片看看數據長什麼樣子~

數據處理

數據處理大概分爲以下幾步:

  • 圖片是28X28,我們要轉換爲一維的,這樣纔可以作爲我們的輸入層。
  • 圖片標準化
  • label值換爲one-hot編碼,做爲輸出層。

代碼:

X_train = X_train.reshape(60000,784).astype('float32')
X_test = X_test.reshape(10000,784).astype('float32')

X_train = X_train/255
X_test = X_test/255

y_train = np_utils.to_categorical(y_train)
y_test = np_utils.to_categorical(y_test)

MLP建模

模型結構

輸入層爲784(28×28)個神經元 ,隱層256個,輸出層爲10。

建立模型

導入相應的庫,建立Sequential模型,然後模型加入Dense神經網絡層(全連接)。具體代碼如下:

from keras.models import Sequential
from keras.layers import Dense

model = Sequential()
model.add(Dense(units=256, 
                input_dim=784, 
                kernel_initializer='normal', 
                activation='relu'))
model.add(Dense(units=10, 
                kernel_initializer='normal', 
                activation='softmax'))

我們可以通過summary查看模型的摘要:

訓練模型
model.compile(loss='categorical_crossentropy', 
              optimizer='adam', metrics=['accuracy'])

train_history = model.fit(x=X_train,
                         y=y_train,validation_split=0.2, 
                         epochs=10, batch_size=200,verbose=2)

對訓練模型進行可視化:

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