【发布时间】:2018-01-25 08:42:44
【问题描述】:
我想通过处理一个数据集A来创建一个数据集B。因此,A (~ 2 Mio.) 中的每一列都必须以批处理方式(通过神经网络)进行处理,产生 3 个输出,这些输出堆叠在一起,然后例如存储在一个 numpy 数组中。
我的代码如下所示,这似乎不是最好的解决方案。
# Load data
data = get_data()
# Storage for B
B = np.empty(shape=data.shape)
# Process data
for idx, data_B in enumerate(data):
# Process data
a, b, c = model(data_B)
# Reshape and feed in B
B[idx * batch_size:batch_size * (idx + 1)] = np.squeeze(np.concatenate((a, b, c), axis=1))
我正在寻找加快堆叠或分配过程的想法。我不知道是否可以进行并行处理,因为所有内容最终都应该存储在同一个数组中(排序并不重要)。有没有我可以使用的python框架?
加载数据需要 29 秒(只完成一次),堆叠和分配需要 20 秒,批量大小仅为 2。model 命令需要
【问题讨论】:
-
我的猜测是处理数据(
model调用)比迭代机制需要更长的时间,包括堆叠。当然,您可以通过执行最少处理的比较运行来测试它。 -
我知道pandas 框架专注于数据集处理,并允许您有效地转换数据集(在后台使用 numpy 数组)。你可以试试看。
-
不,事实并非如此。请看我的补充。
标签: python performance numpy parallel-processing database-performance