iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 23
0
AI & Data

AI從入門到放棄系列 第 23

Day 23 ~ AI從入門到放棄 - 遷移學習之二

  • 分享至 

  • xImage
  •  

今天我們挑選一個由Google在2019年發表的CNN模型架構EfficientNet為大家演示,此過程中使用到Functional的模型建構方式。

from tensorflow.keras.applications import EfficientNetB0

如果你只想使用網路的架構,那只要這樣就行了。

model = EfficientNetB0(include_top=True, weights=None, input_shape=(32,32,3), pooling='avg', classes=10, classifier_activation='softmax')

要做遷移學習,我們載入模型架構,然後指定用imagenet訓練過後的權重初始化,由於imagenet有1000個類別,我們要變更最後二元分類器的數量,先使用include_top=False取消模型最後的全連接層,之後再手動接上感知層,作為輸出的分類器,由於不能參考imagenet的權重,此層權重將採用隨機初始化。

from tensorflow.keras.layers import Dense
from tensorflow.keras.models import Model

model = EfficientNetB0(include_top=False, weights='imagenet', input_shape=(32,32,3), pooling='avg')
x = model.output
output = Dense(units=10, activation='softmax')(x)
model = Model(inputs=model.input, outputs=output)

前述只使用架構的方法,會幫我們在模型的最後感知層與全局平均池化層中間加上Dropout層,在遷移學習這裡我們沒有添加,有需要的可以自行加上。

由於這類預訓練權重都是在解析度較高的圖片訓練而成,模型前幾層將圖片的解析度降了不少,但是cifar10的解析度不高,過了模型前幾層後,剩下2X2甚至1X1的解析度,因此很難學習到甚麼東西,所以我們這裡就不做成果展示了。


上一篇
Day 22 ~ AI從入門到放棄 - 遷移學習之一
下一篇
Day 24 ~ AI從入門到放棄 - 遷移學習之三
系列文
AI從入門到放棄30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言