15 手寫數字識別 小資料集

2022-08-22 13:45:10 字數 2844 閱讀 9691

1.手寫數字資料集

2.資料預處理

3.設計卷積神經網路結構

設計卷積神經網路結構

model =sequential()

ks = (3, 3) #

卷積核的大小

input_shape = x_train.shape[1:]

model.add(conv2d(filters=16, kernel_size=ks, padding='

same

', input_shape=input_shape, activation='

relu

'))#

一層卷積,padding='same',tensorflow會對輸入自動補0

model.add(maxpool2d(pool_size=(2, 2)))#

池化層1

model.add(dropout(0.25))#

防止過擬合,隨機丟掉連線

model.add(conv2d(filters=32, kernel_size=ks, padding='

same

', activation='

relu

'))#

二層卷積

model.add(maxpool2d(pool_size=(2, 2)))#

池化層2

model.add(dropout(0.25))

model.add(conv2d(filters=64, kernel_size=ks, padding='

same

', activation='

relu

'))#

三層卷積

model.add(conv2d(filters=128, kernel_size=ks, padding='

same

', activation='

relu

'))#

四層卷積

model.add(maxpool2d(pool_size=(2, 2)))#

池化層3

model.add(dropout(0.25))

model.add(flatten())

#平坦層

model.add(dense(128, activation='

relu

'))#

全連線層

model.add(dropout(0.25))

model.add(dense(10, activation='

softmax

'))#

啟用函式softmax

model.summary()

4.模型訓練

5.模型評價

#

模型評價

score =model.evaluate(x_test, y_test)

print('

score:

', score)

y_pred =model.predict_classes(x_test)

print('

y_pred:

', y_pred[:10])

#交叉表與交叉矩陣

y_test1 = np.argmax(y_test, axis=1).reshape(-1)

y_true =np.array(y_test1)[0]

#交叉表檢視**資料與原資料對比

pd.crosstab(y_true, y_pred, rownames=['

true

'], colnames=['

predict'])

#交叉矩陣

15 手寫數字識別 小資料集

1.手寫數字資料集 from sklearn.datasets import load digits digits load digits 2.資料預處理 x data digits.data.astype np.float32 scale minmaxscaler x data scale.fit...

15 手寫數字識別 小資料集

1.手寫數字資料集 from sklearn.datasets import load digits digits load digits 2.資料預處理 3.設計卷積神經網路結構 4.模型訓練 訓練模型 import matplotlib.pyplot as plt model.compile l...

15 手寫數字識別 小資料集

1.手寫數字資料集 2.資料預處理 from sklearn.datasets import load digits from sklearn.preprocessing import minmaxscaler from sklearn.preprocessing import onehotenco...