InceptionResNetV2モデル(事前トレーニング済み)の前に高密度レイヤーを追加していますこれはInceptionResNetV2出力です
model_base = InceptionResNetV2(include_top=True, weights='imagenet')
x = model_base.get_layer('avg_pool').output
x = Dense(3, activation='softmax')(x)
これがレイヤーが追加されます
input1 = Input(shape=input_shape1)
pre1 = Conv2D(filters=3, kernel_size=(5, 5), padding='SAME',
input_shape=input_shape1, name='first_dense')(input1)
pre = Model(inputs=input1, outputs=pre1)
これは2つのモデルを組み合わせています
after = Model(inputs=pre.output, outputs=x)
model = Model(inputs=input1, outputs=after.output)
model.compile(optimizer='sgd', loss='categorical_crossentropy', metrics=['accuracy'])
使用する
pre.output
なので
after.input
しかし、それは動作しません。どうすれば解決できますか?
以前の出力を取得したいので、まずmodel_baseから新しいモデルを作成します。
あなたのコード:
model_base = InceptionResNetV2(include_top=True, weights='imagenet')
x = model_base.get_layer('avg_pool').output
x = Dense(3, activation='softmax')(x)
新着 model_base
:
model_base = Model(model_base.input, x)
ここで、出力を渡すことが重要ですpre1
このモデルへ:
base_out = model_base(pre1)
それでおしまい:
model = Model(input1, base_out)