是否可以使用多个 "correct" 指标在 TPU 上进行 keras 学习?

Is there any work around to be able to use multiple "correct" metrics for keras learning on TPU?

我在 Google colaboratory 上使用 Keras 制作了小模型。 当我 运行 在 TPU 上学习时,我看到了错误的指标。

当我 运行 在 CPU/GPU 上学习时,当然,m1 和 m2 指标显示正确的数字。 (见下面的代码)

但我将运行时间类型更改为 TPU 后,m1 和 m2 不正确,看起来像是这些值的平均值。

def m1(y_true, y_pred):
    return K.constant(10)

def m2(y_true, y_pred):
    return K.constant(20)

model = AnyModel()
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=[m1, m2])
model.fit(...)

[CPU/GPU 的结果]

[=====>....] - ETA: 0s - loss: xxxxx - m1: 10.0000 - m2: 20.0000 

[TPU 的结果]

[=====>....] - ETA: 0s - loss: xxxxx - m1: 14.9989 - m2: 15.0000 

显然CPU/GPU的结果是正确的。 为什么会这样? 有什么解决方法吗?

现在,它起作用了!

Tensorflow 版本 1.14.0-rc1 可以正确使用多个指标。 估计是tf或者keras的bug,现在已经解决了

(注意:在ver.1.14.0-rc1中,fit_generator无法使用!但应该会尽快解决。)

如果您出于某种原因使用 tensorflow 1.13 或更低版本,请注意这个错误,您可以只使用一个指标。