程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了分割概率图取决于 CPU 或 GPU大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决分割概率图取决于 CPU 或 GPU?

开发过程中遇到分割概率图取决于 CPU 或 GPU的问题如何解决?下面主要结合日常开发的经验,给出你关于分割概率图取决于 CPU 或 GPU的解决方法建议,希望对你解决分割概率图取决于 CPU 或 GPU有所启发或帮助;

我在 tensorflow 中写了一个语义分割模型。该模型在 cpu 中训练,预测也在 cpu 中完成。 一段时间后,我在 GPU 机器上再次运行预测,我注意到概率图中存在一些非常小的差异(附图)。 另外,我想检查一下batch size是否影响了预测分布(我一开始以为没有影响)。

做了一个小实验来描述这四种情况:

A1) 在 cpu 中训练的模型和在 cpu 中运行的预测 --> Batch Size = 1

A2) 在 cpu 中训练的模型和在 cpu 中运行的预测 --> Batch Size = 64

B1) 在 cpu 中训练的模型和在 GPU 中运行的预测 --> Batch Size = 1

B2) 在 cpu 中训练的模型和在 GPU 中运行的预测 --> Batch Size = 64

我已经总结了附图中测试集中其中一张图像的一部分的结果。

我们可以观察到:

  1. 训练模型并在 cpu 中运行预测提供相同的结果,无论批量大小如何。
  2. 在 cpu 中训练模型并在 GPU 中运行预测时,批量大小会产生影响(尽管很小)
  3. cpu 和 GPU 提供的预测不匹配(差异非常小)。如果截止阈值设置为 0.55,这可能是相关的,然后根据附图,cpu 会将其归类为背景像素 (0.5498570.55)如果图片是更大批次的一部分。
  4. 再次运行 GPU 预测,提供不同的概率(再次出现非常小的差异),而 cpu 始终提供相同的概率。

这是重现该功能的 colab 链接。

所以我的主要问题是:

  • 这种行为是否正常且预期会发生
  • 为什么会发生这种行为(文档)?
  • 我怎样才能避免这种情况发生?以便在 GPU 中运行的预测始终提供与 cpu 相同的概率)并且与批大小无关?

分割概率图取决于 CPU 或 GPU

解决方法

分段取决于 RAM。当进程在 RAM 中换入和换出时,将使用不同类型的算法。分段依赖于内存,因此,GPU 直接在页面框架的不同块上进行分段。

,

此问题已在 Keras' github 中发布,Keras 团队已相应回答。

可以提出以下关键点:

  1. 在 GPU 中运行模型会产生不确定的结果(每次运行模型时,它都会提供不同的输出,即使差异非常小
  2. CPU 产生确定性的结果(总是相同的结果)
  3. 有计划使 GPU 预测具有确定性,但它们仍与 CPU 结果略有不同。
  4. 在 TF>2.5 中使用环境变量 TF_DETERMINISTIC_OPS=1 有助于解决不确定性行为。

大佬总结

以上是大佬教程为你收集整理的分割概率图取决于 CPU 或 GPU全部内容,希望文章能够帮你解决分割概率图取决于 CPU 或 GPU所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。