LoginSignup
1
1

More than 3 years have passed since last update.

kerasでVGG16のpoolingの私的メモ

Last updated at Posted at 2019-11-30

VGG16の引数pooling

keras.applications.vgg16.VGG16(include_top=True, weights='imagenet', input_tensor=None, input_shape=None, pooling=None, classes=1000)

引数にpoolingというのがある。

pooling: 特徴量抽出のためのオプショナルなpooling mode,include_topがFalseの場合のみ指定可能.
・None:モデルの出力が,最後のconvolutional layerの4階テンソルであることを意味しています.
・'avg':最後のconvolutional layerの出力にglobal average poolingが適用されることで,モデルの出力が2階テンソルになることを意味しています.
・'max':global max poolingが適用されることを意味します.
引用:https://keras.io/ja/applications/

pooling='None'の場合、出力が4階テンソルとなる。要は4次元のデータとなる。この場合、

conv_base = VGG16(weights='imagenet', include_top=False, input_shape=(150,150,3))

model = models.Sequential()
model.add(conv_base)
model.add(layers.Flatten())
model.add(layers.Dense(256, activation='relu'))
model.add(layers.Dense(1, activation='sigmoid')) 

このようにflattenを用いて全結合をしないといけない。
それに対して、pooling='avg'またはpooling='max'のときは、

conv_base = VGG16(weights='imagenet', include_top=False,pooling='avg', input_shape=(150,150,3))

model = models.Sequential()
model.add(conv_base)
model.add(layers.Dense(1, activation='sigmoid')) 

global average poolingによって全結合のようなものが行われるため、flattenはいらない。

参考

https://keras.io/applications/#vgg16
https://qiita.com/mine820/items/1e49bca6d215ce88594a

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1