了解 mxnet.image.ImageDetIter
Understanding mxnet.image.ImageDetIter
我学习 MXNet 框架并尝试 运行 使用 SSD 进行对象检测的示例:
https://gluon.mxnet.io/chapter08_computer-vision/object-detection.html
我使用的 GPU 是 NVidia GTX 1050,4GB 用于训练。我在 Jupyter 笔记本上工作。版本:Python 3.6,MXNet 1.3.1。
教程中说使用一个 GPU 从头开始训练大约需要 30 分钟。 3小时后我停了下来。当我中断训练时,模型已经处理了 24459 个批次(批次大小为 32)。整个数据集的大小为 87.7MB,小于 24459*32*256*256(图像大小为 256x256)。我不明白为什么它可能需要太多时间。 image.ImageDetIter 是否有任何特殊功能(例如,它永远不会自行停止)?
感谢您提供版本信息。您完全正确 - MXNet 1.3.0 中存在一个错误,其中 ImageDetIter
在您的示例中无限期循环。此问题已修复 Dec 2018,如果您升级到 MXNet 1.4.0,您将不会看到该问题。我通过 运行 上面的代码确认了这一点。
另一个重要说明,"Deep Learning - The Straight Dope" 已被弃用,取而代之的是 (Dive into Deep Learning)(d2l.ai)。内容已更新并用于课程MXNet.这里是书中对应的chapter.
此外,如果您想观看课程视频,我们会发布 here。
至于重现,我 运行 并确认这是在 1.3.x 中无限循环并在 1.4.0.
中修复
train_iter = image.ImageDetIter(
batch_size=1000,
data_shape=(3, data_shape, data_shape),
path_imgrec='./data/pikachu_train.rec',
path_imgidx='./data/pikachu_train.idx',
#shuffle=True,
#mean=True,
#rand_crop=1,
min_object_covered=0.95,
last_batch_handle='pad',
max_attempts=5)
train_iter.reset()
for i,data in enumerate(train_iter):
print((i+1)) # goes forever on 1.3.0 but not 1.4.0
希望对您有所帮助,
维沙尔
我学习 MXNet 框架并尝试 运行 使用 SSD 进行对象检测的示例: https://gluon.mxnet.io/chapter08_computer-vision/object-detection.html
我使用的 GPU 是 NVidia GTX 1050,4GB 用于训练。我在 Jupyter 笔记本上工作。版本:Python 3.6,MXNet 1.3.1。
教程中说使用一个 GPU 从头开始训练大约需要 30 分钟。 3小时后我停了下来。当我中断训练时,模型已经处理了 24459 个批次(批次大小为 32)。整个数据集的大小为 87.7MB,小于 24459*32*256*256(图像大小为 256x256)。我不明白为什么它可能需要太多时间。 image.ImageDetIter 是否有任何特殊功能(例如,它永远不会自行停止)?
感谢您提供版本信息。您完全正确 - MXNet 1.3.0 中存在一个错误,其中 ImageDetIter
在您的示例中无限期循环。此问题已修复 Dec 2018,如果您升级到 MXNet 1.4.0,您将不会看到该问题。我通过 运行 上面的代码确认了这一点。
另一个重要说明,"Deep Learning - The Straight Dope" 已被弃用,取而代之的是 (Dive into Deep Learning)(d2l.ai)。内容已更新并用于课程MXNet.这里是书中对应的chapter.
此外,如果您想观看课程视频,我们会发布 here。
至于重现,我 运行 并确认这是在 1.3.x 中无限循环并在 1.4.0.
中修复train_iter = image.ImageDetIter(
batch_size=1000,
data_shape=(3, data_shape, data_shape),
path_imgrec='./data/pikachu_train.rec',
path_imgidx='./data/pikachu_train.idx',
#shuffle=True,
#mean=True,
#rand_crop=1,
min_object_covered=0.95,
last_batch_handle='pad',
max_attempts=5)
train_iter.reset()
for i,data in enumerate(train_iter):
print((i+1)) # goes forever on 1.3.0 but not 1.4.0
希望对您有所帮助,
维沙尔