【发布时间】:2016-07-13 07:21:11
【问题描述】:
我正在尝试做非常大的 2 个 dask 数组 X (35000 x 7500) 和 Y(7500 x 10) 的点积。由于点积也将非常大,我将其存储在 hdf5 中
f = h5py.File('output.hdf5')
f['output'] = X.dot(Y)
但是第二个命令即使将近 1 个小时也没有给出任何输出。怎么了?有更快的技术吗?创建 X 和 Y 时是否存在“块”问题?
【问题讨论】:
我正在尝试做非常大的 2 个 dask 数组 X (35000 x 7500) 和 Y(7500 x 10) 的点积。由于点积也将非常大,我将其存储在 hdf5 中
f = h5py.File('output.hdf5')
f['output'] = X.dot(Y)
但是第二个命令即使将近 1 个小时也没有给出任何输出。怎么了?有更快的技术吗?创建 X 和 Y 时是否存在“块”问题?
【问题讨论】:
考虑.to_hdf5 方法或da.store 函数。
>>> X.dot(Y).to_hdf5('output.hdf5', 'output')
或
>>> output = f.create_dataset('/output', X.dot(Y).shape, X.dot(Y).dtype)
>>> da.store(X.dot(Y), output)
to_hdf5 方法对您来说可能更容易。 da.store 方法也适用于其他格式。
H5Py 中的 __setitem__ 函数(当您说 f['output'] = ... 时使用的是硬编码以使用 NumPy 数组。
【讨论】: