cpu 和 gpu 的 coreml 推理结果不同

coreml inference results are different with cpu and gpu

os 系统:macos Catalina 10.15.2
xcode: 11.3
coreml3.0

我将相同的模型输入给相同的 mlmodel。但是使用 cpu 设备和 gpu 设备的推理结果是不同的。

结果如下,左边是使用cpu的推理结果(第二列),右边是使用CpuAndGpu的推理结果(第二列)。我用beyond compare比较了两个文件,红色标出的数据就是差值。

有人知道这个问题以及如何解决吗?

enter image description here

这本身不是问题。在 GPU 上,使用 16 位浮点数,而在 CPU 上使用 32 位浮点数。 16 位浮点数的精度较低,这解释了您得到的不同结果。

有些数字会稍大一些,有些会稍小一些,但通常这些影响会相互抵消,您不会注意到差异。

(但是,如果您的模型生成图像,您可能会注意到 16 位浮点数提供的较低精度导致的像素伪影。)