Есть ли способ использовать несколько правильных показателей для обучения keras на TPU?

Я сделал небольшую модель с помощью 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]), значение правильное.

person mercy387    schedule 11.06.2019    source источник


Ответы (1)


Теперь это работает!

Несколько показателей можно правильно использовать с Tensorflow версии 1.14.0-rc1. Я предполагаю, что это была ошибка tf или keras, но теперь она решена.

(Примечание: в версии 1.14.0-rc1 fit_generator нельзя использовать! Но это должно быть решено в ближайшее время.)

Если по какой-то причине вы используете тензорный поток 1.13 или меньше, помните об этой ошибке, и вы можете использовать только одну метрику.

person mercy387    schedule 15.06.2019