我有一个形状为80000 * 401408的hdf5文件。我需要以64的批量读取数据,但索引可以随机说(5,0,121,..,2)。
问题在于,虽然最初的读取非常一致,并且批次需要0.5秒才能完成,但一段时间后,一些批次需要更长时间达10秒,而某些批次仍在快速读取。我观察到越来越多的读取发生,阅读过程正在放缓。
hf = h5py.File( conv_file,'r')
conv_features = hf['conv_features']
while True:
conv_batch = [None for i in range(64)]
for i in range(0, 64):
conv_batch[count] = np.reshape(conv_features[some_random_index], [14, 14, 2048] )
# time for each of the above reads for conv_bacth is different.. varies from 0.5 to 5 seconds.. and slows down over time.
我没有使用块
答案 0 :(得分:0)
您是否尝试过使用数据集控制块大小。将块大小设置为合理且经常访问的部分。
例如,如果您通常每行访问80000 * 401408数据, 如果块是(1,401408)或也许有效地读取了块 (1,200704)。
根据您的访问方式,块大小会极大地影响访问时间。您还可以考虑使用压缩。