是否可以使用多种“正确”的指标来在TPU上进行keras学习?

时间:2019-06-11 03:40:57

标签: tensorflow keras google-colaboratory google-cloud-tpu tpu

我使用Keras在Google colaboratory上制作了小模型。 而且,当我在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]),则该值正确。

1 个答案:

答案 0 :(得分:0)

现在,它可以工作了!

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

(注意:在版本1.14.0-rc1上,不能使用fit_generator!但应尽快解决。)

如果出于某种原因使用tensorflow 1.13或更小版本,请注意此错误,并且只能使用一个度量标准。