我使用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的结果是正确的。 为什么会这样呢? 有什么解决方法吗?
答案 0 :(得分:0)
现在,它可以工作了!
Tensorflow版本1.14.0-rc1可以正确使用多个指标。 我想这是tf或keras的错误,但是现在已经解决了。
(注意:在版本1.14.0-rc1上,不能使用fit_generator
!但应尽快解决。)
如果出于某种原因使用tensorflow 1.13或更小版本,请注意此错误,并且只能使用一个度量标准。