Tensorflow Hub + Estimator 潜在错误:训练后的权重未重用于评估/预测
Posted
技术标签:
【中文标题】Tensorflow Hub + Estimator 潜在错误:训练后的权重未重用于评估/预测【英文标题】:Tensorflow Hub + Estimator Potential Bug: Trained weights not reused for Evaluation/Prediction 【发布时间】:2018-11-08 09:29:49 【问题描述】:在我当前的项目中,我使用 TF Hub 图像模块和估计器来解决分类问题。根据 TF Hub 指南,我在训练模式下将标签设置为“训练” - 在评估/预测模式下将标签设置为无。测试损失/准确性非常糟糕,但训练损失不断减少。经过几天的调试后,我了解到以某种方式没有使用集线器的训练模型权重(似乎只有集线器外部的最后一个密集层被重用)。
为了确认问题出在哪里,我什至在训练时都没有传递“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 在其他问题的一边用代码指针讨论了这一点。
【讨论】:
对不起,我花了一点时间来测试。我在您提到的 github 线程中尝试了解决方案 - 使用 tf.contrib.training.create_train_op 并不能解决我的问题。我可以尝试其他任何指针吗?以上是关于Tensorflow Hub + Estimator 潜在错误:训练后的权重未重用于评估/预测的主要内容,如果未能解决你的问题,请参考以下文章
TensorFlow Hub 模块可以在 TensorFlow 2.0 中使用吗?
如何使 TensorFlow Hub 模型为 TensorFlow Serving REST 请求做好准备(使用 base64 编码图像)?
Jupyter notebook Import tensorflow_hub error: No module named tensorflow.python.training.tracking