完成 GeneratorDataset 迭代器时发生错误:已取消:操作已取消

Posted

技术标签:

【中文标题】完成 GeneratorDataset 迭代器时发生错误:已取消:操作已取消【英文标题】:Error occurred when finalizing GeneratorDataset iterator: Cancelled: Operation was cancelled 【发布时间】:2020-05-16 22:15:30 【问题描述】:

在运行具有使用 tensorflow 2.0 的代码的 kubeflow 管道时。每个时期结束时都会显示以下错误

W tensorflow/core/kernels/data/generator_dataset_op.cc:103]

另外,经过一些时期后,它不会显示日志并显示此错误

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

【问题讨论】:

我也遇到了第一个错误。还没有看到第二个错误。 【参考方案1】:

tensorflow2.1 升级到2.2 为我解决了这个问题。我不必去tf-nightly 版本。

【讨论】:

将 TensorFlow 2.1 升级到 TensorFlow 2.2,这个问题就消失了。我 @user3284804 - 如果这个答案对您有帮助,请考虑投票。谢谢。 我在 conda env 上运行 tensorflow-gpu,它一直在安装 2.1 版,如果我尝试使用 pip3 install --upgrade tensorflow-gpu 升级它,我就不能再使用它了知道如何在环境中升级 tensorflow-gpu 版本 @Dhouibiiheb 不能再使用是什么意思? @Safwan 意味着当我尝试以下操作时: pip install --upgrade tensorflow==2.2 / 2.3 tensorflow 将不再工作。据我所知,conda env 目前支持 tf 2.1 ,但不确定【参考方案2】:

就我而言,我不匹配 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

【讨论】:

【参考方案4】:

我也有同样的问题。人们声称变暖是多余的,并且已在 tf-nightly 中删除,请参阅here。但是每个 epoch 的内存泄漏仍然存在。

【讨论】:

【参考方案5】:

就我而言: 我安装了 tf-nightly。 现在它正在工作,虽然我是 tensorflow 的新手。我关注了这个link

你可以试试。

【讨论】:

【参考方案6】:

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

【讨论】:

【参考方案7】:

我尝试了以下步骤,它在我的情况下有效

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

【讨论】:

以上是关于完成 GeneratorDataset 迭代器时发生错误:已取消:操作已取消的主要内容,如果未能解决你的问题,请参考以下文章

Scrapy拓展——完成时发通知邮件

尝试实现 STL 迭代器时出错

检查数组中是不是存在迭代器时,array.includes 不起作用[重复]

在 Java 中使用迭代器时向 ArrayList 添加元素

使用向量迭代器时的 EXC_BAD_ACCESS?

使用 ARM GCC 编译列表迭代器时的模板编译时错误