首页 > 解决方案 > 我可以获得已选择的文件名列表吗?

问题描述

我目前正在使用 ImageDataGenerator ...

datagen = tf.keras.preprocessing.image.ImageDataGenerator(rescale=1./255.)
train_it = datagen.flow_from_directory("MyTrainImgDir",batch_size=8,target_size=(1024,1024))
...

history = model.fit(train_it,epochs=10,steps_per_epoch=16,
                              callbacks=[TrainingCallback()],
                              ...
                              );
class TrainingCallback(Callback):
       def on_train_batch_begin(self, batch, logs=None):
             print(f"Training: Starting batch {batch}")
             ## I believe I would need to write some code here..
       

我想要的是......在那个回调中,我想打印在训练期间选择的图像文件名......这可能吗?

我很确定每批都会选择不同的图像文件进行训练...我想看看可能选择了哪些图像文件进行训练...

所以输出会像..

训练:开始第 0 批

1234.jpg

23456.jpg ...

培训:开始第 1 批

5679.jpg

98542.jpg

...

任何帮助,将不胜感激。

谢谢,

ps:注意我那个目录下的图片文件总数是1000,这里的batch size是8。所以steps_per_epoch是125,但是我提供的不到125。据我所知,在这种情况下,batch会随机选择

P.s2:实际上,我可以像这样打印文件名。

start = batch * 8
end = start + 8
train_it.filenames[start : end]

但是,这仅在 step_per_epoch = 125 时才有意义。如果 step_per_epoch 不等于 125,我相信我需要 fit 方法选择的实际批次号,如果我是正确的,我相信它应该是随机的....我的意思是,由于我提供了 16 个步骤,因此选择的实际批号可能是 1、4、10(共 16 个)、...110... 或 8、12、...100(共 16 个)..something像那样..

标签: pythonimagecallbackfilenames

解决方案


推荐阅读