我正在使用Conv2D
圖層定義一個具有函數的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',metrics = ['accuracy'])'編譯模型,然後'model.summary()'查看其結構 – Prabaha