Я пытаюсь выполнить k-max pooling
, чтобы выбрать top-k
элементы плотной формы (None, 30)
.Я пробовал слой MaxPooling1D
, но он не работает, так как для пула слоев keras требуется как минимум 2-мерная форма ввода.Я использую следующий Lambda
слой, но я получил следующую ошибку:
layer_1.shape
(None, 30)
layer_2 = Lambda(lambda x: tf.nn.top_k(x, k=int(int(x.shape[-1])/2),
sorted=True,
name="Top_k_final"))(layer_1)
Ошибка: файл "/usr/local/lib/python3.5/dist-packages/keras/engine/base_layer.py ", строка 474, в вызов output_shape = self.compute_output_shape (input_shape) Файл" /usr/local/lib/python3.5/dist-packages/keras/layers/core.py ", строка 652, в compute_output_shape возвращает файл K.int_shape (x)" /usr/local/lib/python3.5/dist-packages/keras/backend/tensorflow_backend.py ", строка 591, в int_shape возвращает кортеж (x.get_shape (). as_list ()) AttributeError: у объекта 'TopKV2' нет атрибута 'get_shape'