Tensorflow Hub + Estimator潜在错误:训练的权重不会重复用于评估/预测

时间:2018-05-29 16:42:28

标签: tensorflow tensorflow-estimator tensorflow-hub

在我目前的项目中,我使用TF Hub图像模块和估算器来解决分类问题。根据TF Hub指南,我在训练模式下将标签设置为“训练” - 在Eval / Predict模式下设置为None。测试损失/准确性非常差,但训练损失不断减少。经过几天的调试后,我了解到,不知何时,集线器的训练模型权重没有被使用(似乎只有集线器外部的最后一个密集层被重用)。

要确认问题出在哪里我甚至没有通过“训练”标签进行训练(没有其他变化) - 问题立即得到解决。

感谢所有的帮助 - 非常感谢!

#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 个答案:

答案 0 :(得分:0)

对于https://tfhub.dev/google/imagenet/inception_v3/feature_vector/1,默认标签(意味着空集)和tags={"train"}之间的区别在于后者在训练模式下操作批量规范(即,使用批次统计进行标准化)。如果这导致灾难性的质量损失,我的第一个怀疑是:UPDATE_OPS是否与train_op一起运行?

https://github.com/tensorflow/hub/issues/24在其他问题方面讨论了代码指针。