【发布时间】:2020-06-28 17:20:20
【问题描述】:
我想在每个包含 N 个训练点的批次上使用梯度下降来训练神经网络。我希望这些批次只包含具有相同标签的点,而不是从训练集中随机抽样。
例如,如果我正在使用 MNIST 进行训练,我希望得到如下所示的批次:
batch_1 = {0,0,0,0,0,0,0,0}
batch_2 = {3,3,3,3,3,3,3,3}
batch_3 = {7,7,7,7,7,7,7,7}
.....
等等。
我如何使用 pytorch 来做到这一点?
【问题讨论】:
-
每个类的点数不同,不需要被batch_size整除。那么你将如何处理呢?是否应该有一些包含不同类别的批次(例如,在某些时候,您将剩下 3 个等级 0 的点)或者您是否想要删除不适合批次的点?
-
训练点的数量可能也不能被batch_size整除,所以应该没问题吧?
-
例如 0 类有 5923 个点,所以如果你把它们分成大小为 8 的批次,你将有 740 个这样的批次(740*8 = 5920),将有 3 个点还剩 0 个。你把它们放在哪里?
-
当您有 50.000 个训练点和 128 个批量大小时会发生什么?它们也不是可分的,但这是一个非常常见的设置。为了回答您的问题,我可以在特定时期放弃一些分数。谢谢!
-
我对 QMNIST 的看法有误,对此感到抱歉,删除了我的答案。
标签: python classification pytorch