markdown
CNN架構選擇一直是deep learning中很重要的一部分,從早期LeNet-5用來手寫字元辨識
F-CNN、resnet、vgg19...
一開始心中都會有個疑問,到底這些層數是怎麼決定出來的
後來大概理解就像是hyperparameter一樣吧,透過不斷的實驗而得出來的最佳化結果
通常這類的CNN架構,還會包含預先訓練好的conv layer
讓你在訓練新的data時收斂速度更快
在keras中,只要簡單的指令就可以快速的把這些經典的CNN模型架起來
並且可以修改輸入的影像尺寸、增減模型的層數
```=python
# 定義你的輸入影像尺寸
custom_input_shape =(128, 128, 3)
# 定義你的data類別總數
classes = 6
# 從tf.keras.applications載入CNN架構
base_model=MobileNetV2(weights='imagenet', input_shape=custom_input_shape)
x=base_model.output
x=GlobalAveragePooling2D()(x)
x=Dense(1024,activation='relu')(x) #增加dense層讓model可以學習更複雜的分類
x=Dense(1024,activation='relu')(x) #dense layer 2
x=Dense(512,activation='relu')(x) #dense layer 3
preds=Dense(classes,activation='softmax')(x) #最後一層需填入dataset的類別總數
model=keras.Model(inputs=base_model.input,outputs=preds) #宣告model, 指定輸入和輸出
model.summary() # 用文字方式顯示CNN架構
```
想看keras有甚麼經典模型可以看這裡Module: tf.keras.applications
參考:Keras with MobilenetV2 for Deep Learning
沒有留言:
張貼留言