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
我正在尝试 运行 自定义图像上的 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