Tensorflow Keras:为什么嵌入层只能用作第一层?

Tensorflow Keras:为什么嵌入层只能用作第一层?,tensorflow,keras,Tensorflow,Keras,在中,它指出嵌入层“只能用作模型中的第一层”。这对我来说毫无意义,我可能希望在将输入传递到嵌入层之前对其进行重塑/展平,但这是不允许的。为什么嵌入层只能用作第一层 “只能用作模型中的第一层。”这毫无意义 对我来说 通常,嵌入层将离散值映射为连续值。在子序列层中,我们有连续的向量表示,这意味着不需要再次转换向量 在将输入传递到之前,我可能需要对其进行整形/展平 嵌入层 当然,您可以重塑或展平输入,但在大多数情况下是没有意义的。例如,假设我们有长度为30的句子,并希望在将其传递给嵌入之前将其展平:

在中,它指出嵌入层“只能用作模型中的第一层”。这对我来说毫无意义,我可能希望在将输入传递到嵌入层之前对其进行重塑/展平,但这是不允许的。为什么嵌入层只能用作第一层

“只能用作模型中的第一层。”这毫无意义 对我来说

通常,嵌入层将离散值映射为连续值。在子序列层中,我们有连续的向量表示,这意味着不需要再次转换向量

在将输入传递到之前,我可能需要对其进行整形/展平 嵌入层

当然,您可以重塑或展平输入,但在大多数情况下是没有意义的。例如,假设我们有长度为30的句子,并希望在将其传递给嵌入之前将其展平:

input_layer = Input(shape=(30))
flatten = Flatten()(input_layer)
embedd = Embedding(1000, 100)(flatten)
在上面的示例中,“展平层”根本没有效果。展平前后,我们的矢量大小为
[批次,30]

让我们看另一个例子,假设我们的输入向量是[batch,30,2]形状的2D。对输入进行平坦化后,向量的大小为
[batch,60]
。我们可以将它们输入嵌入层,但在大多数情况下,它没有任何意义。事实上,我们破坏了特征之间的逻辑关系

input_layer = Input(shape=(30, 2))
flatten = Flatten()(input_layer)
embedd = Embedding(1000, 100)(flatten)