0
我目前正试图使用h5py
来存储一个大的numpy.ndarray。h5f.create_dataset导致MemoryError
print len(train_input_data_interweawed_normalized)
print train_input_data_interweawed_normalized[0].shape
raw_input("Something")
print "Storing Train input"
h5f = h5py.File(fbank+'train_input_'+str(dim)+'_'+str(total_frames_with_deltas)+'_window_height_'+str(window_height)+'.h5', 'w')
h5f.create_dataset('train_input', data=np.concatenate(train_input_data_interweawed_normalized,axis=1))
##Program chrash here
h5f.close()
输出打印的:
4834302
(45, 1, 8, 3)
但不知何故程序chrashses与错误信息的MemoryError ..
是什么意思..没有足够的内存? 根据htop的ram使用情况在它的崩溃之前是11 gb/15 gb。
所以它不可能是这样吗?
那还有什么?
测试'h5f'调用之外的'np.concatenate()'步骤。它必须在写入文件之前创建这个大阵列。当你在这里时,向我们展示这些印刷报表的结果。是的,内存错误通常意味着你正在尝试创建一个对你的内存来说太大的数组。记忆测量只是故事的一部分。我们需要一些关于该阵列应该有多大的想法。 – hpaulj
是的..它似乎像'np.concatenate()'是造成这个问题..是否有可能连接并保存在步骤? –
它看起来像'train_input_data_interweawed_normalized'是一个相当小的阵列(1080个元素)很长的列表。而'concatenate'试图制作一个(45,4834302,8,3)4d阵列,5G元素阵列。难怪它给出了一个内存错误。它可能有足够的空间容纳散布在周围的元素,但它不能将它们全部放在一个连续的内存块中。 – hpaulj