レイヤーを使用する関数でLambda
レイヤーを定義しています。Keras:Lambda関数内のConv2Dレイヤーのバニシングパラメータ
def lambda_func(x,k):
y = Conv2D(k, (3,3), padding='same')(x)
return y
そして
k = 64
x = Conv2D(k, (3,3), data_format='channels_last', padding='same', name='block1_conv1')(inputs)
y = Lambda(lambda_func, arguments={'k':k}, name = 'block1_conv1_loc')(x)
を使用して、それを呼び出すしかしmodel.summary()
で、ラムダ層がパラメータを示していません!
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
input_1 (InputLayer) (None, 224, 224, 3) 0
_________________________________________________________________
block1_conv1 (Conv2D) (None, 224, 224, 64) 1792
_________________________________________________________________
block1_conv1_loc (Lambda) (None, 224, 224, 64) 0
_________________________________________________________________
activation_1 (Activation) (None, 224, 224, 64) 0
_________________________________________________________________
block1_pool (MaxPooling2D) (None, 112, 112, 64) 0
_________________________________________________________________
flatten (Flatten) (None, 802816) 0
_________________________________________________________________
(その下Dense
層、およびその下Softmax
2クラス分類器があります)。 Lambda
レイヤのConv2D
パラメータが確実に表示され、トレーニングも可能ですか?私はまた、Lambda
機能でtrainable=True
を使ってみました。
def lambda_func(x,k):
y = Conv2D(k, (3,3), padding='same', trainable=True)(x)
return y
しかし、それは何の違いもありませんでした。
どのモデルでどのように 'summary()'を呼びますか? – DarkCygnus
私は標準的な手順を使用しています。 'model = my_model(weights_path = 'weights.h5')'ここで私は 'Model' APIで' my_model'を定義しました。モデルをコンパイルするために 'model.compile(optimizer = 'RMSprop'、loss = 'binary_crossentropy'、メトリクス= ['精度'))'を呼び出し、その構造を見て 'model.summary()'を呼び出します。 – Prabaha