我正在尝试改编一个来自https://colab.research.google.com/github/tensorflow/docs/blob/master/site/en/tutorials/text/transformer.ipynb的转换器代码,并将其用于动作识别。我的数据集由1000个动作和一个可变长度的帧(N)组成,其中每个帧包含84个float32点(x,y)。我将N和点结合起来,为每个动作形成一个相当大的1d张量。操作有一个可变的最大长度约为12K。我的batch = 1, num_layers = 2, d_model = 32, dff = 64, num_heads = 2。
我的错误是:
2 root error(s) found.
(0) Invalid argument: indices[0,1923] = -1 is not in [0, 12936) [[node transformer_1/encoder_2/embedding_4/embedding_lookup (defined at :24) ]] (1) Invalid argument: indices[0,1923] = -1 is not in [0, 12936) [[node transformer_1/encoder_2/embedding_4/embedding_lookup (defined at :24) ]]
[[transformer_1/encoder_2/embedding_4/embedding_lookup/_24]] 0 successful operations. 0 derived errors ignored. [Op:__inference_train_step_17044]
Function call stack: train_step -> train_step如果我的张量输入少于3000个元素,我可以成功地运行它,但如果更高,我会得到上面的错误。有没有人遇到过这样的问题?我不知道错误是什么意思,也不知道如何修复它:
附言:我在某处读到这可能是一个TensorFlow错误(?)但不确定:/
再次提供帮助,我们将不胜感激。
发布于 2020-12-08 18:43:38
检查您输入的数据。嵌入通常是transformer编码器的第一层。因此,错误可能是由第一层生成的。您的一个输入索引为负数。需要正索引的嵌入层。
https://stackoverflow.com/questions/65197324
复制相似问题