Я сделал маленькую модель с помощью Keras в Google colab Laboratory.И я вижу неправильные метрики, когда я запускаю обучение на 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]), значение будет правильным.