Tensorflow 如何在tf估计中使用预训练模型进行微调

Tensorflow 如何在tf估计中使用预训练模型进行微调,tensorflow,tensorflow-estimator,Tensorflow,Tensorflow Estimator,我使用MMDNN工具从caffe转换了一个模型,它将caffe模型转换为保存的_模型tensorflow样式。这是一个resnet18模型,我在最后一部分中去掉了几个层,我希望我能在tf.estimator中的模型中加载这个架构,然后手动添加一些额外的层来完成我的工作。 正如教程建议的那样,我可以使用loader.load方法加载保存的_模型。但我只想在估计器中使用它,我需要在model_fn函数中定义架构。我搜索了SO和github,但没有一个非常具体的工作流程来做这件事,有人可以帮我吗?这里

我使用MMDNN工具从caffe转换了一个模型,它将caffe模型转换为保存的_模型tensorflow样式。这是一个resnet18模型,我在最后一部分中去掉了几个层,我希望我能在tf.estimator中的模型中加载这个架构,然后手动添加一些额外的层来完成我的工作。
正如教程建议的那样,我可以使用loader.load方法加载保存的_模型。但我只想在估计器中使用它,我需要在model_fn函数中定义架构。我搜索了SO和github,但没有一个非常具体的工作流程来做这件事,有人可以帮我吗?

这里有一种使用tf进行微调的方法。Estimator:

  • 使用与保存的模型中相同的变量名/范围定义模型
  • 使用tf.estimator的热启动函数,用保存的权重初始化新模型。以下是一段代码片段:

    if fine_tuning:
        ws = tf.estimator.WarmStartSettings(ckpt_to_initialize_from=path_saved_model,
                                            vars_to_warm_start='.*')
    else:
        ws = None
    
    estimator = tf.estimator.Estimator(model_fn=model_function,
                                                warm_start_from=ws,
                                                ...
                                                )
    

  • 这将初始化在当前定义的图形和保存的模型之间共享名称的任何变量。

    很抱歉延迟答复,感谢您的回答,但我最近放弃了使用估计器的想法,我使用了基本的tf.import\u meta\u graph()API作为替代。我改为基本API的原因是我想直接从检查点文件导入图形(我使用loader方法先导入.pb文件,然后输出检查点文件,我真的不知道如何操作.pb文件)。然后,我通过图形找到了张量。get_tensor_by_name()方法从特征层获取张量,并添加一些额外的层来完成我的任务。