Keras: параметры исчезновения в слое Conv2D в функции лямбда
Я определяю 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
_________________________________________________________________
(E сть Dense
слой под ним, и Softmax
2-классный классификатор под этим). Как я могу обеспечить Conv2D
параметры Lambda
слой появляются и тоже можно тренировать? Я также пытался использовать trainable=True
в Lambda
функция.
def lambda_func(x,k):
y = Conv2D(k, (3,3), padding='same', trainable=True)(x)
return y
Но это не имело никакого значения.
1 ответ
Лямбда-слои не имеют параметров.
Параметры, в резюме, являются переменными, которые могут "учиться". Лямбда-слои никогда не учатся, это функции, созданные вами.
Если вы намерены использовать "Сверточный слой", используйте его за пределами лямбда-слоя.
Теперь, если вы хотите использовать "операцию свертки", а затем использовать ее внутри лямбда-слоя, но нет обучаемого параметра, вы сами определяете фильтры.
Если вы хотите создать специальный слой, который обучается по-другому, то создайте пользовательский слой.