如何使用Keras Lambda Layer切片?

时间:2020-03-02 08:58:25

标签: python tensorflow keras

我试图通过提取最大范数的单词(使用该单词代表句子)来为文本分类模型创建句子向量。以下是我的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,那会更好。

0 个答案:

没有答案