Я сделал небольшую модель с помощью Keras в лаборатории Google. И я вижу неправильные показатели, когда запускаю обучение на 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
[результат ТПУ]
[=====>....] - ETA: 0s - loss: xxxxx - m1: 14.9989 - m2: 15.0000
Очевидно, что результат CPU / GPU верен. Почему это произошло? Есть ли обходной путь?
- Если я использую только одну метрику (например, [m1]), значение правильное.