【问题标题】:Is one step equal to on epoch if i train my model on one (large) image?如果我在一张(大)图像上训练我的模型,一步是否等于一个纪元?
【发布时间】:2020-03-15 12:47:16
【问题描述】:

我正在使用 tensorflow 对象检测 api 实现主动学习管道。 因此,我从 xView 数据集中的一张图像开始(大小约为 3000x4000px)。

现在我正在训练我的 fast_rcnn 网络,批量大小为 1。 如果只有一张图像要训练并且批量大小为 1,那么每一步(在控制台中打印)是否等于一个 epoch?

假设在 20 个主动学习周期之后,训练数据集中有 20 张图像,我训练了 19 步,最后一张图像从未被训练过,对吧?

如果图像数量增加但每个主动学习周期的步数保持不变,则网络将永远不会对后来添加的图像进行训练,或者将在停止的地方继续训练(例如图像 19)

【问题讨论】:

    标签: python tensorflow machine-learning object-detection-api


    【解决方案1】:

    您似乎正确理解了 epoch:这是一个训练过程,您在数据集中的每个图像上训练一次。如果您的批量大小等于数据集大小,那么是的,您每个 epoch 有一次迭代。

    如果你训练了 19 步(批量大小 = 1)并且有 20 张图像,那么其中一张将被排除在近纪元之外……但被排除在外的图像不一定是“最后一个”一,(“最后一个”取决于您的图像的排序方式)。这取决于您未指定的数据提取软件。

    这些输入包中的大多数都采用“shuffle”操作,该功能将在每个 epoch 开始时对数据集进行随机排序。 我还使用了一个按照您的建议执行的摄取包,从前一个停止的地方拾取每一次传球(伪纪元训练组)。每次数据集耗尽时,它还可以选择是否重新洗牌。

    要获得明确的答案,您必须检查框架的文档以及为您的特定模型所做的配置选择。如果没有这样的文档,你就会被困在我不得不做的事情中:花十分钟的原始尖叫时间:-),然后阅读代码。

    【讨论】:

    • 好吧,看来我是在正确的道路上。配置方面我正在使用这个配置文件:github.com/tensorflow/models/blob/master/research/… 每次迭代后都没有提示洗牌。不过,我是否在正确的地方寻找随机播放选项?
    • 如果那是源代码存储库,是的。我希望 README 文件能够引导您找到所需的输入描述。
    • 好的,谢谢。如果只有一个小数据集(1 到最多 100 张图像,分辨率约为 3000x4000 像素),您是否建议调整图像大小并进行多次训练,或者在全尺寸图像上训练更少时间?
    • (1) 我对您的申请了解得还不够多,无法发表意见; (2) 这是一个单独的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-10-22
    • 2020-06-22
    • 1970-01-01
    • 2020-06-27
    • 1970-01-01
    • 2022-01-19
    • 2020-01-03
    相关资源
    最近更新 更多