我在 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]),则该值是正确的。