Эквивалентность GlobalAveragePooling1D с лямбда-слоем

#keras

#python #тензорный поток #машинное обучение #keras #глубокое обучение

Вопрос:

Является ли уровень GlobalAveragePooling1D таким же, как вычисление среднего значения с помощью пользовательского уровня Lambda?

Данные являются временными, поэтому x имеет форму (пакет, время, функции)

 x=keras.layers.Lambda(lambda x: keras.backend.mean(x, axis=1))(x)
  

по сравнению с

 x=GlobalAveragePooling1D()(x)
  

Поскольку мои результаты сильно отличаются, кажется, чего-то не хватает.

Есть идеи?

Ответ №1:

вы можете протестировать это самостоятельно…

 X = np.random.uniform(0,1, (32,24,10)).astype('float32')

x_lambda = Lambda(lambda x: tf.keras.backend.mean(x, axis=1))(X)
x_pool = GlobalAveragePooling1D()(X)

tf.reduce_all(x_lambda == x_pool)
# <tf.Tensor: shape=(), dtype=bool, numpy=True>
  

Они одинаковы