iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 22
0
AI & Data

Machine Learning與軟工是否搞錯了什麼?系列 第 22

Day 22 如何讓測試資料集的正確率變高呢? Fusion篇

  • 分享至 

  • xImage
  •  

如何讓測試資料集的正確率變高呢? Fusion篇

今天我們要試試看,Fusion對正確率的影響。

前置作業

我們使用Colab來當作我們的實作平台,並使用Keras來完成。

資料集

fashion_mnist,為Keras內建的資料集
訓練集為60,000 張28x28 像素灰度圖像,測試集為10,000 同規格圖像,總共10 類時尚物品標籤。該數據集可以用作MNIST 的直接替代品。類別標籤是:
類別 描述 中文
0 T-shirt/top T卹/上衣
1 Trouser 褲子
2 Pullover 套頭衫
3 Dress 連衣裙
4 Coat 外套
5 Sandal 涼鞋
6 Shirt 襯衫
7 Sneaker 運動鞋
8 Bag 背包
9 Ankle boot 短靴

Code

我們使用12層當作基準。與之前不同的是我們在model的尾端不使用Dense層。

12層

def model_12layer():
  #12層
  input_shape=(28,28,1)

  input = Input(input_shape)

  layer=Conv2D(32, kernel_size=(2, 2), activation='relu', padding='same')(input)
  layer=BatchNormalization()(layer)
  for i in range(2):
    layer=Conv2D(32, kernel_size=(2, 2), activation='relu',padding='same')(layer)
    layer=BatchNormalization()(layer)
  layer=MaxPooling2D(pool_size=(2, 2))(layer)
  for i in range(3):
    layer=Conv2D(64, kernel_size=(2, 2), activation='relu',padding='same')(layer)
    layer=BatchNormalization()(layer)
  layer=MaxPooling2D(pool_size=(2, 2))(layer)
  for i in range(3):
    layer=Conv2D(128, kernel_size=(2, 2), activation='relu',padding='same')(layer)
    layer=BatchNormalization()(layer)
  layer=MaxPooling2D(pool_size=(2, 2))(layer)
  for i in range(3):
    layer=Conv2D(256, kernel_size=(2, 2), activation='relu',padding='same')(layer)
    layer=BatchNormalization()(layer)
  layer=MaxPooling2D(pool_size=(2, 2))(layer)

  layer = Dropout(0.5)(layer)
  output = Flatten()(layer)

  model = Model(inputs=[input], outputs=[output])

  model.compile(loss='sparse_categorical_crossentropy',optimizer=keras.optimizers.Adam(lr=0.0001,decay=1e-6),metrics = ['accuracy'])
  return model

Fusion架構

可以看到Fusion其實就是把model連接起來。Dense層我們會在連接起來後再使用,這樣可以使特徵數量更多。

正確率比較

| 層數 | 12層 | 3個Fusion |5個Fusion|7個5個Fusion|9個Fusion|
| -------- | -------- | -------- |-|-|-|-|
|正確率 | 88.63% |89.44%|88.70%|89.75%|89.98%|

投票的正確率:

層數 12層 3個投票 5個投票 7個投票 9個投票 15個投票
正確率 88.63% 90.48% 91.41% 91.61% 91.75% 91.89%

結論

在我們測試的情況中,Fusion也可以提升正確率,但是提升的幅度沒有單純的Voting好。


上一篇
Day 21 如何讓測試資料集的正確率變高呢? Voting篇
下一篇
Day 23 RNN和LSTM 和GRU
系列文
Machine Learning與軟工是否搞錯了什麼?30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言