【问题标题】:Dataset API -- Variable input sizes for batching数据集 API——用于批处理的可变输入大小
【发布时间】:2018-10-30 03:20:27
【问题描述】:

我正在训练一个可以接受可变输入大小的模型(它是一个完全卷积网络),它具有相当复杂的输入管道。

这就是为什么我必须使用数据集 api 的 from_generator 方法来处理所有逻辑。

但是,我希望能够在不同大小的图像批次上训练网络。 例如。对于第一批,输入图像的大小可能是 200x200,但对于下一个,它可能是 300x300。

我想针对各种尺寸范围(例如,从 100x100 到 2000x2000)随机化这个过程。

使用 feed_dict 这将非常简单:我会在每个训练步骤上准备一个具有特定图像大小的批次。

有什么方法可以使用(高性能)数据集 api 来做到这一点,这样我就可以利用多线程/预取而无需做太多工作?

【问题讨论】:

  • 不知道为什么我被否决了。理由会受到欢迎,以便我可以改进我的任务

标签: tensorflow tensorflow-datasets


【解决方案1】:

最好的办法是从要支持的每个不同 minibatch 大小的数据集开始,在每个此类数据集中进行批处理,然后在构建迭代器之前将它们交错。

【讨论】:

  • 我正在考虑随机更改生成器内部的输入大小,比如每 100 步。由于多线程调用可能存在不相等的输入大小,我希望只在 try catch 块中运行我的火车查找(并忽略输入尺寸不等的错误)
  • 这可行,但会执行大量不必要的 I/O,因此可能无法很好地扩展到许多 GPU,但一开始它会起作用。
  • 为什么会做不必要的IO?我相信只有抛出异常的批次会被浪费?还是这个逻辑会引入额外的 IO 浪费?
  • 每次你忽略输入尺寸不等的错误,那是你做的一堆 I/O,不会变成小批量
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-07-25
  • 1970-01-01
  • 1970-01-01
  • 2016-12-30
  • 1970-01-01
  • 2019-02-06
  • 1970-01-01
相关资源
最近更新 更多