【发布时间】:2017-07-06 17:10:47
【问题描述】:
我正在定义一个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() 中,lambda 层没有显示任何参数!
_________________________________________________________________
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()...? -
我正在使用标准程序。
model = my_model(weights_path='weights.h5')我用ModelAPI 定义了my_model。然后我调用model.compile(optimizer='RMSprop', loss='binary_crossentropy', metrics=['accuracy'])编译模型,然后model.summary()查看它的结构
标签: python-2.7 lambda keras conv-neural-network