生成数据集迭代器完成时发生错误:已取消:操作被取消。

18

在运行使用TensorFlow 2.0的代码的Kubeflow管道时,每个epoch结束时都会显示以下错误:

W tensorflow/core/kernels/data/generator_dataset_op.cc:103] 在终止GeneratorDataset迭代器时发生错误:已取消操作

此外,在一些epoch之后,它不会显示日志,并显示以下错误:

此步骤处于失败状态,显示以下消息:节点的资源不足:内存。Container main正在使用100213872Ki,超过了其请求的0。Container wait正在使用25056Ki,超出了其请求的0。


我也遇到了第一个错误。还没有看到第二个错误。 - markemus
7个回答

5

tensorflow2.1 升级到 2.2 可以解决这个问题,我不需要切换到 tf-nightly 版本。


1
已将 TensorFlow 2.1 升级至 TensorFlow 2.2,此问题已解决。 - user3284804
我正在conda环境下运行tensorflow-gpu,它一直安装2.1版本,如果我尝试使用pip3 install --upgrade tensorflow-gpu升级它,我就不能再使用它了。有人知道如何在环境中升级tensorflow-gpu版本吗? - Dhouibi iheb
@Dhouibiiheb 你说不能再使用它了是什么意思? - Safwan
@Dhouibiiheb conda 现在支持 tf2.2。使用 conda install -c anaconda tensorflow-gpu 安装 tf2.2。 - Safwan
@Safwan 我已经尝试过了,没有任何变化,无法将tf更新到tf2.2。 - Dhouibi iheb
显示剩余2条评论

5
在我的情况下,我没有匹配batch_sizesteps_per_epoch
例如,
his = Test_model.fit_generator(datagen.flow(trainrancrop_images, trainrancrop_labels, batch_size=batchsize),
                               steps_per_epoch=len(trainrancrop_images)/batchsize,
                               validation_data=(test_images, test_labels),
                               epochs=1,
                               callbacks=[callback])

在datagen.flow中的batch_size必须与Test_model.fit_generator中的steps_per_epoch相对应(实际上,我在steps_per_epoch中使用了错误的值)。
这是错误的其中一种情况,我猜测。
因此,我认为当批次大小和步骤(迭代)之间存在错误对应时,问题就会出现。
也许,在进行除法运算得到步骤时,浮点数可能会引起问题...
请检查您的代码以解决此问题。
祝你好运 :)

3

这是由于CUDA和Tensorflow版本不兼容造成的。以下版本可以很好地相互配合使用:

tensorflow-gpu==2.0.0

tensorflow-addons==0.6.0

nvidia/cuda:10.0-cudnn7-runtime


1

我有同样的问题。有人声称温度调整是多余的,并已在tf-nightly中删除,参见此处。但每个时期的内存泄漏仍然存在。


0

我尝试了以下步骤,在我的情况下它起作用了

conda install tensorflow=2.0.0
conda install -c conda-forge keras=2.3.0

0
在我的情况下: 我安装了tf-nightly。 现在它可以工作,尽管我是tensorflow的新手。 我按照这个link进行操作。
你可以试试。

0

要解决这个问题,您可以在model.fit(...)中添加workers=1


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接