Image processing 在训练更快的R-CNN模型时,什么是';历元长度';什么意思?

Image processing 在训练更快的R-CNN模型时,什么是';历元长度';什么意思?,image-processing,deep-learning,computer-vision,classification,object-detection,Image Processing,Deep Learning,Computer Vision,Classification,Object Detection,为了训练frcnn模型,需要定义两个参数 数字时代 历元长度 “历元长度”的默认值为1000。此外,如果我有500个num_历元,那么每个历元都有1000步长。在这篇文章中,它指出“请注意,每个批次在这里只处理一个图像。” 因此,如果我只有一节课要训练1300幅图像,那么我应该将历元长度改为1300而不是1000吗 num_epochs = 500 epoch_length = 1000 for epoch_num in range(num_epochs): progbar = ge

为了训练frcnn模型,需要定义两个参数

  • 数字时代
  • 历元长度
  • “历元长度”的默认值为1000。此外,如果我有500个num_历元,那么每个历元都有1000步长。在这篇文章中,它指出“请注意,每个批次在这里只处理一个图像。”

    因此,如果我只有一节课要训练1300幅图像,那么我应该将历元长度改为1300而不是1000吗

    num_epochs = 500
    epoch_length = 1000
    
    for epoch_num in range(num_epochs):
    
        progbar = generic_utils.Progbar(epoch_length)
        print('Epoch {}/{}'.format(epoch_num + 1, num_epochs))
    

    通常,每次您不想(或不能)在每个历元的整个数据集上迭代时,都可以有一个
    epoch\u length
    (或等效)参数

    事实上,最常见的历元定义如下:

    一个历元=所有训练单次通过(向前+向后) 例子

    按照这个通用定义,您的模型应该“看到”所有的培训示例,以声明一个时代已经结束;然后下一个开始。在这种情况下,n个时期的训练意味着模型看到每个训练示例n次

    然而,这并不总是可行/你想做什么

    作为一个极端的例子,假设您正在使用数据加载器动态生成的合成数据对模型进行训练。在此设置中,您的培训数据实际上是无限的,因此没有“迭代所有培训示例”的概念。一个时代将永远持续下去。在epoch结束时调用的任何回调(例如保存模型权重、计算度量)都不会运行


    为了解决这个问题,您可以人为地定义多个批次,这些批次在您的特定应用程序中划出一个历元。所以你可以说<代码> EngChyLime= 1000 ,这意味着在对1000个例子/批次进行训练后,你认为终止了一个新纪元。通过这种方式,您可以决定在epoch结束时执行的每个操作(例如上面的回调、日志记录等)的粒度。

    您可以在此处添加部分配置文件,这将让我们更了解您的配置是什么?配置文件具有其研究论文中提到的默认设置,代码段仍然是必需的吗?我正在为使用这些变量的培训部分添加代码。另外,当我说默认值是1000时,我的意思是在我遇到的所有文章中,他们都使用了1000。读到每个批处理只处理一个图像,我感到困惑。