python - 我可以获得已选择的文件名列表吗?
问题描述
我目前正在使用 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像那样..
解决方案
推荐阅读
- sql-server - SQL:我想删除重复的字符串
- android - 如何在单击按钮时获取当前时间?
- javascript - Adobe Illustrator JavaScript - 在循环中将数据集应用于每个打开的文档
- typescript - Typescript 重构 switch 语句
- swift - 将 UIViewController 添加到 UICollectionViewCell
- java - JavaFX+mysql jdbc中如何添加、更新、删除和搜索记录?
- python - 如何优化 Django FormView 的数据库性能
- sql - SQL - 分别与一个连接检索相关记录
- javascript - 我想了解 JavaScript 中的延迟函数
- c++ - 如何将结构名称更改为整数?