迭代 Tensorflow BatchDataset 失败并出现 InvalidArgumentError

Iterating over Tensorflow BatchDataset fails with InvalidArgumentError

我正在关注 Tensorflow NER 示例:https://keras.io/examples/nlp/ner_transformers/

然而,在模型上调用 fit() 时,它因以下错误而中断:

InvalidArgumentError:  StringToNumberOp could not correctly convert string: 
     [[{{node StringToNumber_1}}]]
     [[IteratorGetNext]] [Op:__inference_train_function_2480]

我已将其隔离到 BatchDataset 迭代器,该迭代器有时会失败。当根据教程它应该工作时,为什么会出现上述错误而失败。我正在使用 Tensorflow 2.7.0 和 Keras 2.7.0

以下 colab 可用于复制错误:https://colab.research.google.com/drive/1P1apD3o9I8bclzMN0S0CBUGdkEouzpr2?usp=sharing

文件 conll_train.txtconll_val.txt 中的最后两行导致了问题,因为它们不是正确的条目。如果您跳过它们,一切都会正常进行。在创建数据集的代码片段中试试这个:

train_data = tf.data.TextLineDataset("./data/conll_train.txt")
train_data = train_data.take(len(list(train_data.map(lambda x: x)))-2)
val_data = tf.data.TextLineDataset("./data/conll_val.txt")
val_data = val_data.take(len(list(val_data.map(lambda x: x)))-2)