TensorFlow giving error "InvalidArgumentError: Input is empty" when training or validating

TensorFlow giving error "InvalidArgumentError: Input is empty" when training or validating

我正在尝试 运行 自定义图像上的 Resnet 模型(迁移学习)。

我的目录树如下所示:

|-train
|  |-class1
|  |    |-image1
|  |    |-image2
|  |    |-....
|  |-class2
|       |-image1
|       |-image2
|       |-....
|-val
   |-class1
   |    |-image1
   |    |-image2
   |    |-....
   |-class2
        |-image1
        |-image2
        |-....

我创建了这样的 tensorflow 数据集:

train_ds = tf.keras.preprocessing.image_dataset_from_directory( "train", labels='inferred', label_mode='int', image_size=(img_height, img_width), batch_size=batch_size)

val_ds = tf.keras.preprocessing.image_dataset_from_directory( "val", labels='inferred', label_mode='int', image_size=(img_height, img_width), batch_size=batch_size)

但是当我训练或测试数据集时,在几张图像之后它给我一个错误:

InvalidArgumentError: Input is empty [[{{node decode_image/DecodeImage}}]] [Op:IteratorGetNext]

<Figure size 720x720 with 0 Axes>.

我正在使用的数据集在这里 - https://github.com/xuequanlu/I-Nema - 我已将所有 .tif 图像转换为 .jpg。可能是什么原因造成的?

提前致谢!

编辑:这是错误日志:https://pastecode.io/s/82hk68ar

在你的代码中你有

train_ds = tf.keras.preprocessing.image_dataset_from_directory( "train", labels='inferred', label_mode='int', image_size=(img_height, img_width), batch_size=batch_size)

“train”应该是包含训练图像的目录的完整路径,而不是字符串。 例如 train_dir=os.path.join(my_dir, 'train') 其中 my_dir 包含 train 和 val 子目录

train_dir=os.path.join(my_dir, 'train')
val_dir=os.path.join(my_dir, 'val')
train_ds = tf.keras.preprocessing.image_dataset_from_directory( train_dir, labels='inferred', label_mode='int', image_size=(img_height, img_width), batch_size=batch_size)
val_ds = tf.keras.preprocessing.image_dataset_from_directory( val_dir, labels='inferred', label_mode='int', image_size=(img_height, img_width), batch_size=batch_size)

另请注意,因为您使用的是 label_mode='int' 然后在 model.compile 将损失指定为 sparse_categorical_crossentropy