【DL】在MNIST數據集上用keras實現全連接網絡

1 環境設置

使用anaconda、spyder、win10實現。

打開conda prompt用conda創建一個名爲py3mnist的環境:安了兩個基礎包,指定了python版本。

conda create -n py3mnist python=3.6 numpy pandas
  • 切換到指定環境:conda activate env_name
  • 退出環境:conda deactivate

切換到創建好的環境裏,看一下環境裏的包:conda list

需要什麼包就安裝什麼: conda install keras

裝好包就可以裝編輯器了,注意事項:這個時候的spyder還是老環境的。

可以在當前環境命令行輸入:conda install spyder,或者覺得spyder麻煩,直接用jupyter notebook,安裝也是同理。

直接在當前虛擬環境裏輸入spyder啓動,可能鏈接的編譯器仍然是老環境的,需要在頂部tools》preferences》pythoninterpretter》手動把解釋器改成虛擬環境路徑下的python。如我的路徑:D:\PYrelated\anaconda\ envs\py3mnist\python.exe就可以了。

2 學點keras

有些常用的數據內置在keras中,通過from keras.datasets import mnist,mnist.load_data(path)調用。

在keras中模型是通過多個層的線性堆疊實現:可以加激活,卷積等等

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

#直接定義整個網絡
model = Sequential([
Dense(32, input_shape=(784,)),
Activation('relu'),
Dense(10),
Activation('softmax'),
])

# 逐層定義
model = Sequential()
model.add(Dense(32, input_dim=784)) #輸入數據
model.add(Activation('relu'))
。。。。。。

模型編譯:compile()參數有很多,常見:

  • 損失函數(loss= )
  • 優化器(optimizer=)
  • 評估方法( metrics=)
# 二分類問題
model.compile(optimizer='rmsprop',
				loss='binary_crossentropy',
				metrics=['accuracy'])
# 均方誤差迴歸問題
model.compile(optimizer='rmsprop',
				loss='mse')

模型訓練:fit()參數很多:

testmodel = model.fit(X_train,
                    Y_train,
                    batch_size=128,
                    epochs=5,
                    verbose=2,
                    validation_data=(X_test, Y_test))

模型保存:save()

model.save(model_path)

模型複用評估()

from keras.models import load_model
mnist_model = load_model(model_path)
loss_and_metrics = mnist_model.evaluate(X_test, Y_test)

更多詳細的介紹可以看官方手冊: 鏈接

3 網絡實現

使用mnist手寫體數字作爲數據集:GitHub鏈接

  • kerasModel 模型結構文件
  • kerasdatapre 數據預處理

數據內容:

在這裏插入圖片描述

測試訓練數據分佈:
在這裏插入圖片描述

測試情況:

在這裏插入圖片描述

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