iT邦幫忙

2022 iThome 鐵人賽

0

今天參考了CNN模型VGG16與AlexNet由於GPU的memory分配不足,所以filters的部分從64,128,256,512都改為一半,而全連階層4096太大了因此改為512。

VGG16

#參考VGG16
model.add(Conv2D(filters=32, kernel_size=(3, 3),  padding='same', input_shape=(13, 13, 1), activation='relu'))
model.add(Conv2D(filters=32, kernel_size=(3, 3), padding='same', activation='relu'))
model.add(MaxPooling2D((2, 2), strides=(2, 2), padding='same'))

model.add(Conv2D(filters=64, kernel_size=(3, 3), padding='same', activation='relu'))
model.add(Conv2D(filters=64, kernel_size=(3, 3), padding='same', activation='relu'))
model.add(MaxPooling2D((2, 2), strides=(2, 2), padding='same'))

model.add(Conv2D(filters=128, kernel_size=(3, 3), padding='same', activation='relu'))
model.add(Conv2D(filters=128, kernel_size=(3, 3), padding='same', activation='relu'))
model.add(Conv2D(filters=128, kernel_size=(3, 3), padding='same', activation='relu'))
model.add(MaxPooling2D((2, 2), strides=(2, 2), padding='same'))

model.add(Conv2D(filters=256, kernel_size=(3, 3), padding='same', activation='relu'))
model.add(Conv2D(filters=256, kernel_size=(3, 3), padding='same', activation='relu'))
model.add(Conv2D(filters=256, kernel_size=(3, 3), padding='same', activation='relu'))
model.add(MaxPooling2D((2, 2), strides=(2, 2), padding='same'))

model.add(Conv2D(filters=256, kernel_size=(3, 3), padding='same', activation='relu'))
model.add(Conv2D(filters=256, kernel_size=(3, 3), padding='same', activation='relu'))
model.add(Conv2D(filters=256, kernel_size=(3, 3), padding='same', activation='relu'))
model.add(MaxPooling2D((2, 2), strides=(2, 2), padding='same'))

model.add(Flatten())

model.add(Dense(1024, activation='relu'))
model.add(Dense(1024, activation='relu'))
model.add(Dense(4, activation='relu'))

接著5個label數量各為20萬、40萬、20萬、1萬6與480,因此將480的label拿掉(補充說明480為棄牌動作)。

https://ithelp.ithome.com.tw/upload/images/20221015/201455277l08D8eelB.png
從以上結果來看,VGG16不適用於牌局訓練。

AlexNet

這是有放Pooling版本,為了驗證Pooling對於牌局的影響,因為手牌位置代表手牌牌值的大小而Pooling的主要功能是保留主要的特徵,可能會破壞牌局的完整性。

#參考AlexNet
model.add(Conv2D(filters=96, kernel_size=(11, 11), strides=4,  padding='same', input_shape=(13, 13, 1), activation='relu'))
model.add(MaxPooling2D(pool_size=(3, 3), strides=2, padding='same'))
model.add(Conv2D(filters=256, kernel_size=(5, 5), strides=1, padding='same', activation='relu'))
model.add(MaxPooling2D(pool_size=(3, 3), strides=2, padding='same'))

model.add(Conv2D(filters=384, kernel_size=(3, 3), strides=1, padding='same', activation='relu'))
model.add(Conv2D(filters=384, kernel_size=(3, 3), strides=1, padding='same', activation='relu'))
model.add(Conv2D(filters=256, kernel_size=(3, 3), strides=1, padding='same', activation='relu'))
model.add(MaxPooling2D(pool_size=(3, 3), strides=2, padding='same'))
model.add(Dropout(0.5))

model.add(Flatten())

model.add(Dense(1024, activation='relu'))
model.add(Dropout(0.5))

model.add(Dense(1024, activation='relu'))
model.add(Dense(4, activation='softmax'))

https://ithelp.ithome.com.tw/upload/images/20221015/20145527eOnQ1jb1Bs.png

沒有Pooling & 有Dropout版本,好像差不多呢
https://ithelp.ithome.com.tw/upload/images/20221015/20145527fLy6EyMhXs.png

沒有Pooling & 沒有Dropout版本,目前看來此版本是比較好的,暫定用這個
https://ithelp.ithome.com.tw/upload/images/20221015/20145527mSII76JGQ8.png


上一篇
DAY 31 one-hot編碼用法
下一篇
DAY 33 修改棄牌動作 & 增加學習率
系列文
關於因耍廢太久而必須挑戰5個月上研究所的廢廢38
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言