【发布时间】:2019-04-02 19:22:44
【问题描述】:
我想实现一个向量化的 SGD 算法,并且想一次生成多个小批量。
假设data = np.arange(0, 100)、miniBatchSize=10、n_miniBatches=10 和indices = np.random.randint(0, n_miniBatches, 5)(5 个小批量)。我想要实现的是
miniBatches = np.zeros(5, miniBatchSize)
for i in range(5):
miniBatches[i] = data[indices[i]: indices[i] + miniBatchSize]
有没有办法避免for循环?
谢谢!
【问题讨论】:
-
你必须做一些 Python 级别的循环。您可以像在此处那样组合切片,也可以生成索引范围、连接这些切片和一个索引。所有替代方案的速度大致相同。另一种选择是使用
as_strided生成此大小的所有切片,然后选择一个子集。