最近正在學習Andrea在Coursera上開的Deep Learning課程,之前工作關係有接觸到keras,而且使用起來還滿容易上手的,所以就嘗試拿了MNIST資料集來試玩看看
首先載入手寫辨識資料集mnist,這個資料集還滿廣泛被拿來使用的,而且在keras也可以直接載入,另外也會用到最基本的keras Sequential model。
1 | from keras.datasets |
1 | model = Sequential() |
再來直接宣告一個sequential模型,並載入訓練和測試資料集
1 | x_train = np.reshape(x_train, (x_train.shape[0], -1))/255 |
接著要先處理一下載入的資料,在x資料的部份要先將原本28×28的維度轉成1×784輸入,這裡可以使用numpy的reshape來處理,再來再將資料除上255作正規化。另外在label y資料集的部份則要作one-hot encoding,將每個標籤轉成長度為10的向量,並用0和1來表示屬於哪一個類別。
1 | x_train.shape |
可以看到處理完後的資料維度
1 | model.add(Dense(units=256, activation='relu', input_dim=28*28)) |
再來加入兩個layer,即只使用一個hidden layer和一個output layer,其中hidden layer有256顆神經元,output layer有10顆,並透過softmax輸出結果
1 | model.compile(loss='categorical_crossentropy', |
接著開始設定使用什麼loss function與最佳化的方法,還有要評估模型的指標
1 | model.fit(x_train, y_train, epochs=10, batch_size=32) |
接著就開始訓練,其中會設定訓練的週期與每一次的批數
1 | 128) loss_and_metrics = model.evaluate(x_train, y_train, batch_size= |
中間可以看到訓練的過程,在訓練完畢說可以透過evaluate來評估model在訓練資料集,還有測試資料集的正確率。
keras在建立模型非常方便使用,可以很容易的加入需要的hidden layer數,而且針對常使用的activation function, loss function和最佳化的方法都有支援,如果需要快速的建出模型來作應用非常的推薦。另外keras也有支援CNN還有RNN,下次會用別的資料來試試看囉!
參考資料:
Keras Getting Start