【问题标题】:Eval_training_Data uses full training data or noteval_training_Data 是否使用完整的训练数据
【发布时间】:2020-09-07 07:02:35
【问题描述】:

在Tensorflow Object Detection API中,当eval_training_data设置为True时,评估结果是针对整个训练数据还是部分训练数据num_examples in eval_config?

我正在使用旧脚本编写代码来对训练数据和验证数据进行评估。

【问题讨论】:

    标签: python tensorflow keras deep-learning object-detection-api


    【解决方案1】:

    只应在您生成的 test.tfrecords 上执行评估。它不应该是模型已经训练过的东西。对模型不知道的东西进行测试将有力地评估模型的性能。

    示例数量将限制您从评估 tfrecord 中获取的示例数量以进行评估。这里是 1000,重复服用 10 次。因此,它在评估中将具有随机性。就像训练中的批处理一样

    eval_config: {
     metrics_set: "coco_detection_metrics"
      num_examples: 1000
      # Note: The below line limits the evaluation process to 10 evaluations.
      # Remove the below line to evaluate indefinitely.
      max_evals: 10
    }
    
    eval_input_reader: {
      tf_record_input_reader {
        input_path: "path_to_test*.record"
      }
      label_map_path: "path_to_labelmap.pbtxt that you use to train"
      shuffle: false
      num_readers: 1
    }
    

    【讨论】:

    • 这里的疑问是 eval_training_data 标志何时设置为 True。在此期间,我们处理的 num_examples 值是多少。
    • 正如我所说,这取决于您要评估多少数据。如果你有 10000 个图像测试数据,由于递归 10 次,1000 足以进行评估。它将加快评估速度并产生随机性。
    • 一小部分 1/10-1/3 的测试数据在我看来是可以的
    • 测试数据不是问题。主要问题与 eval_training_data 参数有关,该参数将用于提供对训练数据的评估结果。我知道评估通常只发生在测试数据上。由于 tensorflow 人员提供了一个用于训练数据评估的选项,我想知道它是如何工作的,如果是这样,我可以将它用于我的训练。因为,当前的训练曲线是基于对象检测 API 中的单个步骤和逐步损失。我想要一个完整的时代。
    • 啊,我明白了,我认为您应该创建另一个问题以避免误导。标题应该类似于“在 epoch 结束时为 Tensorflow API 添加验证”。在阅读github.com/tensorflow/models/blob/master/research/… 中的 train.py 并回溯到配置文件的过程中,他们设计 eval 和 train config 的方式是分开执行的。运行 train.py 时将使用训练配置,运行 eval.py 时将使用 eval 配置
    猜你喜欢
    • 2020-10-22
    • 1970-01-01
    • 2019-09-02
    • 2015-03-28
    • 1970-01-01
    • 2022-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多