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 數據預處理
數據內容:
測試訓練數據分佈:
測試情況: