我正在建立一个以图像和其他数字数据为输入的神经网络。我在Tensorflow后端上使用Keras。
网络有2个输入部分:
1)图片,然后是几个转换层
2)数值数据,然后是密集层
唯一图像的数量很少,但是训练数据很大。
大多数图像在输入数据中出现多次。
(唯一图片数:约2,000个
训练数据:500,000行)
示例:
|---------------------|------------------|
| Image_id | Other data cols |
|---------------------|------------------|
| 1 | 1 |
|---------------------|------------------|
| 1 | 2 |
|---------------------|------------------|
| 1 | 3 |
|---------------------|------------------|
| 2 | 4 |
|---------------------|------------------|
| 2 | 5 |
|---------------------|------------------|
有什么方法可以在训练过程中重用内存中已经存在的图像数据,而不用所有对应的图像数据创建一个巨大的numpy数组?
scaled pixel values for image 1 - other data 1
scaled pixel values for image 1 - other data 2
scaled pixel values for image 1 - other data 3
...
scaled pixel values for image 1 - other data 1000
如您所见,这种方法将导致一个numpy数组,其中重复的图像数据会占用过多的内存。
在网上很难找到类似的案例。谢谢您的任何建议。
答案 0 :(得分:1)
您可以使用Keras中的自定义Data Geberator类来实现。查看here以了解操作方法。您将需要在此处进行修改
l_1 = [1+np.log10(i) if i != 0 else 0 for i in l]
词典中。ID(string)-data(numpy array)
)传递到data_dict
__init__
中使用__data_generation