是否可以获取使用加载的文件名flow_from_directory
?我有 :
datagen = ImageDataGenerator( rotation_range=3, # featurewise_std_normalization=True, fill_mode='nearest', width_shift_range=0.2, height_shift_range=0.2, horizontal_flip=True ) train_generator = datagen.flow_from_directory( path+'/train', target_size=(224, 224), batch_size=batch_size,)
我有一个自定义生成器用于我的多输出模型,如:
a = np.arange(8).reshape(2, 4) # print(a) print(train_generator.filenames) def generate(): while 1: x,y = train_generator.next() yield [x] ,[a,y]
节点,此刻我正在a
为实际训练生成随机数,我希望加载一个json
包含我的图像的边界框坐标的文件.为此,我需要获取使用train_generator.next()
方法生成的文件名.在我有了之后,我可以加载文件,解析json
并传递它而不是a
.x
变量的排序和我得到的文件名列表也是必须的.
是的,至少在版本2.0.4(不知道早期版本)是可能的.
实例ImageDataGenerator().flow_from_directory(...)
具有一个属性,filenames
其中包含生成器生成它们的顺序中的所有文件的列表以及属性batch_index
.所以你可以这样做:
datagen = ImageDataGenerator() gen = datagen.flow_from_directory(...)
在生成器的每次迭代中,您都可以获得相应的文件名,如下所示:
for i in gen: idx = (gen.batch_index - 1) * gen.batch_size print(gen.filenames[idx : idx + gen.batch_size])
这将为您提供当前批次中图像的文件名.