bert Prediction on custom dataset

ubby3x7f  于 4个月前  发布在  其他
关注(0)|答案(3)|浏览(47)

在使用estimator.predict时,我遇到了一个问题。在运行run_classifier.py时,我已经为我的数据集创建了自定义处理器,它们运行得很顺利,除了在尝试预测测试数据集的标签时出现了这个问题。有人能告诉我为什么会出现这个问题吗?有关错误的详细信息请参见图片。

INFO:tensorflow:从prediction_loop记录的错误:TPUEstimatorSpec.predictions必须是Tensors的字典。

wsxa1bj1

wsxa1bj11#

你是否试图使用TPU进行预测?根据run_classifier.py:
警告:根据tpu_estimator.py,TPU上的预测是一个实验性功能,因此在这里不受支持。

xbp102n0

xbp102n02#

你好,这不是问题。我尝试使用GPU,但仍然无法正常工作。此外,还有一个标志可以判断是否使用了TPU,并相应地处理这种情况。

utugiqy6

utugiqy63#

我创建了以下解决方法(或解决方案,尚未检查所有副作用)。
要解决这个问题,将预测结果放入字典中(因为这是引发错误的函数所检查的内容)。请在 create_model 中使用此代码,其中前三行应该已经存在。

probabilities = tf.nn.softmax(logits, axis=-1)
predict_dict = {'probabilities': probabilities}  # this way it is not shot down by check in TPUEstimatorSpec
return loss, per_example_loss, logits, predict_dict

这也意味着需要更改结果的解释方式

result = estimator.predict(input_fn=predict_input_fn)
result = list(result)
result = [pred['predictions'] for pred in result]

目前我无法进行拉取请求,因为这意味着需要调查它是否真的是一个解决方案。只是在这里发布给任何遇到相同问题的人。
编辑:似乎在提交 f39e881b169b9d53bea03d2d341b31707a6c052b 时已经添加了这个功能。所以请再次获取代码以解决问题。

相关问题