Tensorflow Hub + Estimator Потенциальная ошибка: обученные веса не используются повторно для оценки / прогнозирования

В моем текущем проекте я использую модуль изображения TF Hub вместе с оценщиком для задачи классификации. В соответствии с рекомендациями TF Hub, я установил теги "тренироваться" в режиме обучения и "Нет" в режимах Eval/Predict. Потеря / точность теста была настолько плохой, но потеря тренировки продолжала уменьшаться. После нескольких дней отладки я узнал, что каким-то образом обученные весовые коэффициенты концентратора не использовались (казалось, что только последний плотный слой вне концентратора использовался повторно).

Чтобы подтвердить, где проблема, я не пропустил метки "train" даже для обучения (без других изменений) - и проблема была немедленно решена.

Благодарен за помощь - большое спасибо!

#inside model_fn
tags_val = None

if is_training:
    tags_val = {"train"}

is_training = (mode == tf.estimator.ModeKeys.TRAIN)

tf_hub_model_spec = "https://tfhub.dev/google/imagenet/inception_v3/feature_vector/1"

img_module = hub.Module(tf_hub_model_spec, trainable=is_training, tags=tags_val)

#Add final dense layer, etc

1 ответ

За https://tfhub.dev/google/imagenet/inception_v3/feature_vector/1, разница между тегами по умолчанию (имеется в виду пустой набор) и tags={"train"} заключается в том, что последний работает с пакетной нормой в режиме обучения (т. е. использует статистику партии для нормализации). Если это приведет к катастрофической потере качества, моим первым подозрением будет: выполняется ли UPDATE_OPS с train_op?

https://github.com/tensorflow/hub/issues/24 обсуждает это на стороне других проблем, с указателями кода.

Другие вопросы по тегам