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 обсуждает это на стороне других проблем, с указателями кода.