为什么只有当我使用预训练的苗条模型时才会得到双重信息字符串?

Why do i get double info string only when i use pretrained slim model?

我开始使用来自 slim 的 inception_v2_imagenet_2016_08_28 预训练模型训练 faster_rcnn_inception_v2。

  fine_tune_checkpoint: "./pretrained_models/inception_v2_imagenet_2016_08_28/inception_v2.ckpt"
  from_detection_checkpoint: false

我收到有关缺少参数 (gamma) 的警告。 比我得到的所有信息都翻了一番。

INFO:tensorflow:global step 435766: loss = 0.7736 (0.27 sec/step)  
INFO:tensorflow:global step 435766: loss = 0.7736 (0.27 sec/step)

为什么?有解决办法吗? 谢谢

我找到了解决这个问题的方法!

错误在 https://github.com/tensorflow/models/blob/master/research/object_detection/utils/variables_helper.py 中的函数 get_variables_available_in_checkpoint 中:

def get_variables_available_in_checkpoint(variables, checkpoint_path):
    """Returns the subset of variables available in the checkpoint.

    Inspects given checkpoint and returns the subset of variables that are
    available in it.

    TODO: force input and output to be a dictionary.

    Args:
      variables: a list or dictionary of variables to find in checkpoint.
      checkpoint_path: path to the checkpoint to restore variables from.

    Returns:
      A list or dictionary of variables.
    Raises:
      ValueError: if `variables` is not a list or dict.
    """
    if isinstance(variables, list):
        variable_names_map = {variable.op.name: variable for variable in variables}
    elif isinstance(variables, dict):
        variable_names_map = variables
    else:
        raise ValueError('`variables` is expected to be a list or dict.')
    ckpt_reader = tf.train.NewCheckpointReader(checkpoint_path)
    ckpt_vars = ckpt_reader.get_variable_to_shape_map().keys()
    vars_in_ckpt = {}
    for variable_name, variable in sorted(variable_names_map.items()):
        if variable_name in ckpt_vars:
            vars_in_ckpt[variable_name] = variable
        else:
            logging.warning('Variable [%s] not available in checkpoint',
                            variable_name)
    if isinstance(variables, list):
        return vars_in_ckpt.values()
    return vars_in_ckpt

我评论了这部分,训练期间的信息只显示一次。

    # else:
    #     logging.warning('Variable [%s] not available in checkpoint',
    #                     variable_name)