问题描述
我有一个深度学习模型,它从一个 h5 文件中获取两个输入图像,然后输出一个值。我的模型使用 keras 和 tensorflow 以及 python。我想通过使用图像增强技术来补充我当前的数据。为了在我的模型中工作,两个输入图像必须应用相同的增强。
我遇到过这个 HDF5ImageGenerator:https://github.com/angulartist/Keras-HDF5-ImageDataGenerator
但是,在我使用 h5 文件中的两个输入的情况下,上面链接中提供的修复程序不起作用。具体来说,这两个输入是使用来自 keras 的两个 HDF5Matrices(每个输入一个 HDF5Matrix)提供给模型的。如果有人有任何想法或可以为我指出当前困境的解决方案,我将不胜感激。
解决方法
根据以下评论更新了答案。
我熟悉 HDF5,但不熟悉 Keras-HDF5-ImageDataGenerator 实用程序。感谢您添加有关您当前和所需流程的详细信息。我对差异有了更好的理解。好消息——这两个函数都从 H5 文件中读取图像和标签数据。更好的是,HDF5ImageGenerator()
for 的输入与 Keras HDF5Matrix()
的输入非常相似:
HDF5ImageGenerator(src='path/to/train.h5',X_key='images',y_key='labels',scaler=,num_classes=,labels_encoding='hot',batch_size=##,augmenter=your_augmenter_function)
Where:
datapath -> src -> 'path/to/train.h5'
dataset for images -> X_key='images'
dataset for labels -> y_key 'labels'
就您而言,您使用了 2 个图像训练集(同样,我还没有做过)。
HDF5Matrix(datapath,dataset,start=0,end=None,normalizer=None)
# something like this:
image_train1 = HDF5Matrix('path/to/train.h5','images1')
image_train2 = HDF5Matrix('path/to/train.h5','images2')
label_train = HDF5Matrix('path/train.h5','labels')
根据我对 HDF5ImageGenerator 文档的阅读,您似乎可以创建多个生成器(请注意该示例如何将 train_generator
和 val_generator
与 model.fit_generator()
、eval_generator
与model.evaluate_generator()
,还提到使用带有 predict_generator()
的生成器)。
基于此,我会尝试创建 2 个输入生成器来模拟您的矩阵输入。像这样:
train_gen_1 = HDF5ImageGenerator(src='path/to/train.h5',X_key='images1',y_key='labels')
train_gen_2 = HDF5ImageGenerator(src='path/to/train.h5',X_key='images2',y_key='labels')
然后传递类似于您的 2 个 HDF5Matrix 输入(image_train1
和 image_train2
)的 2 个生成器。