运行时的备用 tensorflow hub 模块标签

Alternate tensorflow hub module tags in runtime

我有一个标准管道,可以在训练一个时期后评估模型。我需要 resnet50 在训练时可以微调,所以我这样实例化:

resnet50_module = hub.Module("https://tfhub.dev/google/imagenet/resnet_v2_50/feature_vector/1",
                             trainable=True, name="resnet50_finetunable", tags={"train"})

但是,我读到 here 我应该在评估时取消设置标签。

我意识到我可以保存模型、关闭会话、重置图形、使用 tags=None 重建模型并从检查点加载权重以进行评估。这看起来非常浪费,特别是因为 resnet50 模型的尺寸很大,我需要做数百个 epoch 才能获得好的结果。有没有办法在没有这个的情况下在标签之间切换?

谢谢!

恐怕没有什么好办法不经过检查站。

变量是在调用 hub.Module() 时创建的,因此它们与特定的图形版本相关联(tags={"train"} 用于训练或空标签集用于推理)。您所描述的内容可以理解为功能请求,为模块的每个应用程序单独设置,但尚不存在(并且有一些后果)。

与您想要 运行 的评估相比,指向本地磁盘的检查点真的那么昂贵吗?无论如何,您是否有时不想检查点,以允许在崩溃后恢复?