1

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

为了确认问题出在哪里,我什至没有通过“训练”标签进行训练(没有其他更改) - 问题立即得到解决。

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

#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
4

1 回答 1

1

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

https://github.com/tensorflow/hub/issues/24在其他问题的一边用代码指针讨论了这一点。

于 2018-05-31T17:29:47.423 回答