Как нарезать, используя Keras Lambda Layer? - PullRequest
0 голосов
/ 02 марта 2020

Я пытаюсь создать векторы предложений для модели классификации текста, извлекая слово с наибольшей нормой (используя это слово для представления предложения). Ниже приведена часть моего кода Keras:

Text = Input(shape=(30,))
sentence_mat = Embedding(10000, 300, input_length=30)(Text)
Norms = Lambda(lambda x: K.sum(K.square(x), axis=-1))(sentence_mat)
Largest_idx = Lambda(lambda x: K.argmax(x))(Norms)
Largest = Lambda(lambda x: tf.gather_nd(x, Largest_idx))(sentence_mat)
Output = Dense(5, activation='softmax')(Largest)

Однако возникает следующая ошибка:

File "C:/Users/Ken/Desktop/Testing/model.py", line 39, in <module>
   Output = Dense(5, activation='softmax')(Largest)

File "C:/Users/Ken/Wheels/keras/engine/base_layer.py", line 463, in __call__
   self.build(unpack_singleton(input_shapes))

File "C:/Users/Ken/keras/layers/core.py", line 888, in build
   assert len(input_shape) >= 2

TypeError: object of type 'NoneType' has no len()

Что я не понимаю, почему это так. Может кто-нибудь объяснить мне это?

Было бы лучше, если бы существовало решение, использующее подход Keras, который напрямую не связан с Tensorflow.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...