【问题标题】:A generic way to retrain the last/top layers in a pre-trained TensorFlow graph在预训练的 TensorFlow 图中重新训练最后/顶层的通用方法
【发布时间】:2018-09-24 13:37:35
【问题描述】:

我正在对我的数据试验来自“Tensorflow detection model zoo”的不同预训练 TensorFlow 模型 - 我只想重新训练(微调)每个模型中最深的 N 层以找到我的数据的最佳配置。 有没有办法以适用于任何架构且不依赖于层名称(模型之间的变化)的通用形式来做到这一点? 或者,是否有一种简单的方法可以查询图表中最后 N 层的名称(我的意思是层,而不是操作)?

【问题讨论】:

    标签: tensorflow object-detection tensorflow-estimator tensorflow-slim


    【解决方案1】:

    您可以在training config 中使用freeze_variables 选项来防止对较低层进行优化。

    您希望微调哪个模型?根据我的经验,冻结较低层并不能转化为更快的训练或更好的结果(让较低层浮动似乎最好)。虽然是 YMMV。

    【讨论】:

    • 我想尝试动物园里的几个模型——目前看来ssd_mobilenet_v2_coco_2018_03_29 模型最适合我的数据。您能否指导我如何使用freeze_variables 选项?
    • 将以下行添加到train_config 部分:freeze_variables: "FeatureExtractor/MobilenetV2/(Conv|expanded_conv(_([1-9]|1[0-4]))*)/.*" 通常,如果您将正则表达式指定为freeze_variables 参数,则训练器将不会训练名称与指定正则表达式匹配的变量.请注意,您可以指定多个 freeze_variables 参数。
    猜你喜欢
    • 1970-01-01
    • 2019-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-15
    • 1970-01-01
    • 2019-10-27
    相关资源
    最近更新 更多