0

我在 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的结果是正确的。为什么会这样?有什么解决方法吗?

  • 如果我只使用一个指标(如 [m1]),则该值是正确的。
4

1 回答 1

0

现在,它起作用了!

Tensorflow 版本 1.14.0-rc1 可以正确使用多个指标。我猜这是 tf 或 keras 的错误,但现在已经解决了。

(注意:在ver.1.14.0-rc1,fit_generator无法使用!不过应该很快就能解决了。)

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

于 2019-06-15T11:45:28.567 回答