TF,访问数据集对象中元素的文件名:dataset.group_by_window 按文件名分组?

TF, access the filenames of the elements in a dataset object: dataset.group_by_window group by filename?

我正在尝试训练一个具有“n”个卷积网络主体的网络,然后连接结果并对连接的张量进行预测。

对于训练过程,我想为网络提供“n”个元素的批次。我阅读了文档并找到了有关 map() group_by_window() 和 window() 方法的信息。我想根据我提供给它们的图像的文件名中包含的信息对我的训练和验证数据进行分组,这就是我挣扎的地方。

如何访问数据集对象中元素的文件名,以便我可以在传递给 group_by_window() 方法的 key_func 中使用它?

我使用“image_dataset_from_directory”创建数据集对象,标签是推断和分类的,因为我的数据放置在具有 class 名称的子目录中

使用 属性 file_paths 访问数据集的文件名:

import tensorflow as tf
import pathlib

dataset_url = "https://storage.googleapis.com/download.tensorflow.org/example_images/flower_photos.tgz"
data_dir = tf.keras.utils.get_file('flower_photos', origin=dataset_url, untar=True)
data_dir = pathlib.Path(data_dir)

batch_size = 32

train_ds = tf.keras.utils.image_dataset_from_directory(
  data_dir,
  validation_split=0.2,
  subset="training",
  seed=123,
  image_size=(180, 180),
  batch_size=batch_size)

def preprocess_data(images, labels):
  file_paths = train_ds.file_paths
  # Do something with the file_paths
  # ...

  print(file_paths[:5])
  return images, labels
  
train_ds = train_ds.map(preprocess_data)
# or train_ds.group_by_window(*)
Found 3670 files belonging to 5 classes.
Using 2936 files for training.
['/root/.keras/datasets/flower_photos/daisy/7568630428_8cf0fc16ff_n.jpg',
 '/root/.keras/datasets/flower_photos/dandelion/7367491658_9eb4dc2384_m.jpg',
 '/root/.keras/datasets/flower_photos/tulips/18378582936_ee7085c850.jpg', 
 '/root/.keras/datasets/flower_photos/tulips/2426847695_4b8409402e_n.jpg', 
 '/root/.keras/datasets/flower_photos/roses/2949945463_366bc63079_n.jpg']