python - Tensorflow hub 微调和评估

标签 python tensorflow tensorflow-hub

我想使用tensorflow hub,在我的图中重新训练其模块之一,然后使用该模块,但我的问题是当我设置trainable = Truetags = {"train"} 来创建模块,由于批量归一化层,我无法进行评估。 因此,当我读到这个问题时,我发现我还应该创建另一个图表进行评估,而无需设置 tags = {"train"}。但我不知道如何将变量从训练图恢复到评估图中。我尝试创建具有相同名称的两个模块,并在评估图中使用 reuse = True,但这没有帮助。

最佳答案

为了社区的利益,指定 Arno 在答案部分引用的解决方案(即使它存在于评论部分)。

答案是:

使用 TF1 的 hub.Module ,情况如您所说:训练图或推理图都已实例化,并且没有好的方法可以导入两者并在它们之间共享变量单个 tf.Session。这是由估计器和 TF1 中的许多其他训练脚本(尤其是分布式脚本)使用的方法告知的:有一个生成检查点的训练 session ,以及一个从中恢复模型权重的单独的评估 session 。 (两者在读取的数据集和执行的预处理方面也可能有所不同。)

随着 TF2 及其对 Eager 模式的重视,这种情况发生了变化。 TF2 风格的 Hub 模块(如 https://tfhub.dev/s?q=tf2-preview 所示)实际上只是 TF2-style SavedModels ,并且这些不带有多个图形版本。相反,如果需要区分训练/推理,则恢复的顶级对象上的call函数会采用可选的training=...参数。

这样一来,TF2 应该符合您的期望。请参阅交互式演示 tf2_image_retraining.ipynb以及 tensorflow_hub/keras_layer.py 中的底层代码如何做到这一点。 TF Hub 团队正在努力为 TF2 版本提供更完整的模块选择。

关于python - Tensorflow hub 微调和评估,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53849214/

相关文章:

python - 无法在 Keras 中复制 matconvnet CNN 架构

python - 如何在 Azure ML 中使用 TensorFlow Hub

python - ffmpeg 出错,错误代码为 : -5

python - 在不使用第三个变量的情况下交换 2 个变量的 2 个值; Python

python - 将用户事件记录到 Django 中的文件

machine-learning - 如何在 Tensorflow 中使用经过训练的 CNN 模型进行对象识别

python - 为什么训练集和后续评估的验证集 AUROC 不同?

tensorflow - 在 tensorflow 中将单词剥离为其组成字符

tensorflow - 在简单的 colab 教程中使用 ELMo 交换 gnews

python - 如何创建在 PyPI 上显示图片的 README.md?