将嵌入层添加到 ANN 时出错Keras Functional API

问题描述

错误看起来像这样,

InvalidArgumentError:indices[14,1] = -34 不在 [0,6505) [[节点模型_12/embedding_16/embedding_lookup(定义在:3)]] [操作:__inference_train_function_14552] 错误可能源自输入操作。 连接到节点 model_12/embedding_16/embedding_lookup 的输入源操作: 模型_12/embedding_16/embedding_lookup/13394 函数调用栈: train_function

代码

input_tensor = Input(shape=(train_X_ann.shape[1],))

x = layers.Embedding(6505,300,input_length=max_length,weights=[embedding_matrix],trainable=False)(input_tensor)
y = layers.Flatten()(x)
y1 = layers.Dense(units=units,kernel_initializer=kernel_initializer)(y)
y = layers.Batchnormalization()(y1)
y = layers.Activation(activation)(y)
y = layers.Dropout(rate=drop_rate1)(y)```

Shape of the embedding matrix is (6505,300)

Shape of_train_x_ann (64687,3594)
And it looks something like this
[Snapshot of my training data which includes features too][1]


  [1]: https://i.stack.imgur.com/1KeQM.png

解决方法

错误来自这样一个事实,即您的输入(很可能是您所谓的 train_X_ann)必须是一个整数张量,其值在 0 到 6504 之间,对应于您想要的标记的索引嵌入(因为您为嵌入层指定了 input_dim=6505)。查看错误,似乎其中之一是-34,不属于预期范围。

我不知道您是如何获得输入张量的,但请确保您将标记正确映射到它们各自的索引。这种情况下的负面输入没有意义。