在Python和Keras中将数据生成器用于HDF5文件

时间:2018-07-31 20:20:41

标签: python keras hdf5 large-data

我在编写与Keras中的fit_generator一起使用的data_generator时遇到麻烦。我有一个HDF5文件,该文件具有作为单独数据集存储的4维numpy数组(3-D数据,具有来自处理的额外一维数据)。

每个数据集的格式为(xxx,512,512,1),其中xxx是该特定数据集中的切片数。我有大量数据(500个3-D图像,每个图像有〜300个切片,总计〜50 GB,比我拥有的RAM大得多)。

运行代码时,它显示

  

第1/250版

,然后ram开始填充,并给出内存错误。我该如何为此编写一个data_generator?我还可以研究其他什么方法?

这是我的代码:

import numpy as np
np.random.seed(0)

N     = 10
image = np.random.rand(N, N)
h, w  = image.shape

ft           = np.fft.rfft2(image)
ft_reference = np.fft.fft2(image)
ft_full      = np.zeros_like(image, dtype=np.complex128)
ft_full[:ft.shape[0], :ft.shape[1]] = ft

X, Y          = np.meshgrid(range(h), range(w // 2 + 1, w), indexing='ij')
ft_full[X, Y] = ft_full[-X, -Y].conj()
print(np.allclose(ft_full, ft_reference))

我还尝试通过将每个3-D文件保存为单独的numpy数组,从磁盘上随机读取数据,但是会发生相同的情况。

0 个答案:

没有答案