Python按批次遍历3D数组生成新数组时批次结果被覆盖问题求解
问题原因
你在循环中每次都直接对relevances变量执行重新赋值操作,没有存储前序批次的计算结果,因此循环结束后变量中仅保留最后一批的输出,形状和单批次大小一致。
解决方案
推荐优先使用预分配数组的方案,内存和计算效率更高:
import numpy as np batchsize = 500 # 预分配和输入数组形状、数据类型完全一致的空结果数组 relevances = np.empty_like(sequences) for i in range(0, sequences.shape[0], batchsize): batch = sequences[i:i+batchsize] # 将当前批次计算结果写入对应索引位置 relevances[i:i+batchsize] = lrp_model.lrp(batch)
如果后续有输出形状动态变化的需求,也可以用列表暂存后拼接的方案:
import numpy as np batchsize = 500 batch_res = [] for i in range(0, sequences.shape[0], batchsize): batch = sequences[i:i+batchsize] batch_res.append(lrp_model.lrp(batch)) # 沿第0维拼接所有批次结果,得到最终完整数组 relevances = np.concatenate(batch_res, axis=0)
内容的提问来源于stack exchange,提问作者Oldbighorn
相关产品推荐
相关产品推荐

