【问题标题】:Batch-wise loop over array Python to create new array without overwriting批量循环遍历数组 Python 以创建新数组而不覆盖
【发布时间】:2022-01-08 09:14:40
【问题描述】:

我想遍历形状为 (1134500, 1, 50) 的 3d 数组(序列)

array([[[1000, 1000, 1000, ..., 1005, 1005, 1005]],

   [[1000, 1000, 1000, ..., 1004, 1005, 1004]],

   [[1000, 1000, 1000, ..., 1004, 1005, 1004]],

   ...,

   [[1000, 1000, 1000, ..., 1005, 1005, 1004]],

   [[1000, 1000, 1000, ..., 1005, 1005, 1005]],

   [[1000, 1000, 1000, ..., 1004, 1005, 1004]]], dtype=int32)

为此,我使用了以下 for 循环,除了覆盖之前批处理的结果外,它运行良好:

batchsize = 500

for i in range(0, sequences.shape[0], batchsize):
   batch = sequences[i:i+batchsize]
   relevances = lrp_model.lrp(batch)

因此,我想要一个形状为 (1134500, 1, 50) 的数组(相关性),但我得到一个形状为 (500, 1, 50) 的数组(相关性) 谁能告诉我出了什么问题?

【问题讨论】:

  • 您没有在任何地方保存批次...
  • 对于每次迭代,您的 relevances 变量都会更新。前一批被丢弃。也许您想创建一个列表?

标签: python arrays numpy for-loop batch-processing


【解决方案1】:

如果你想保存相关性,也许

batchsize = 500
relevances = np.zeros(sequences.shape)
for i in range(0, sequences.shape[0], batchsize):
   batch = sequences[i:i+batchsize]
   relevances[i:i+batchsize, :, :] = lrp_model.lrp(batch)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-30
    • 1970-01-01
    • 2021-06-08
    • 1970-01-01
    • 2021-03-24
    • 1970-01-01
    • 2018-07-17
    • 2017-04-30
    相关资源
    最近更新 更多