我建立了一个简单的CNN模型,它引发了以下错误:
Epoch 1/10
235/235 [==============================] - ETA: 0s - loss: 540.2643 - accuracy: 0.4358
---------------------------------------------------------------------------
InvalidArgumentError Traceback (most recent call last)
<ipython-input-14-ab88232c98aa> in <module>()
15 train_ds,
16 validation_data=val_ds,
---> 17 epochs=epochs
18 )
7 frames
/usr/local/lib/python3.7/dist-packages/tensorflow/python/eager/execute.py in quick_execute(op_name, num_outputs, inputs, attrs, ctx, name)
58 ctx.ensure_initialized()
59 tensors = pywrap_tfe.TFE_Py_Execute(ctx._handle, device_name, op_name,
---> 60 inputs, attrs, num_outputs)
61 except core._NotOkStatusException as e:
62 if name is not None:
InvalidArgumentError: Unknown image file format. One of JPEG, PNG, GIF, BMP required.
[[{{node decode_image/DecodeImage}}]]
[[IteratorGetNext]] [Op:__inference_test_function_2924]
Function call stack:
test_function
我写的代码非常简单和标准。其中大部分都是直接从官方网站复制过来的。它在第一个时期完成之前引发了这个错误。我非常确定这些图像都是png文件。列车文件夹不包含任何内容,如文本、代码,但图像除外。我在用可乐。tensorlfow
的版本是2.5.0。感谢您的帮助。
data_dir = './train'
train_ds = tf.keras.preprocessing.image_dataset_from_directory(
data_dir,
subset='training',
validation_split=0.2,
batch_size=batch_size,
seed=42
)
val_ds = tf.keras.preprocessing.image_dataset_from_directory(
data_dir,
subset='validation',
validation_split=0.2,
batch_size=batch_size,
seed=42
)
model = Sequential([
layers.InputLayer(input_shape=(image_size, image_size, 3)),
layers.Conv2D(32, 3, activation='relu'),
layers.MaxPooling2D(),
layers.Flatten(),
layers.Dense(128, activation='relu'),
layers.Dense(num_classes)
])
optimizer = tf.keras.optimizers.Adam(learning_rate=0.001)
model.compile(
optimizer=optimizer,
loss=tf.losses.SparseCategoricalCrossentropy(from_logits=True),
metrics=['accuracy'])
history = model.fit(
train_ds,
validation_data=val_ds,
epochs=epochs
)
发布于 2021-06-30 17:55:34
验证文件夹中的某些文件未采用Tensorflow ( JPEG, PNG, GIF, BMP
)接受的格式,或者可能已损坏。文件的扩展名只是指示性的,不会对文件的内容强制执行任何内容。
您也许能够使用python标准库中的imghdr
module和一个简单的循环找到罪魁祸首。
from pathlib import Path
import imghdr
data_dir = "/home/louis/datasets/sample_skeleton_rgb/"
image_extensions = [".png", ".jpg"] # add there all your images file extensions
img_type_accepted_by_tf = ["bmp", "gif", "jpeg", "png"]
for filepath in Path(data_dir).rglob("*"):
if filepath.suffix.lower() in image_extensions:
img_type = imghdr.what(filepath)
if img_type is None:
print(f"{filepath} is not an image")
elif img_type not in img_type_accepted_by_tf:
print(f"{filepath} is a {img_type}, not accepted by TensorFlow")
无论您的文件是否是图像,或者不是其扩展名所说的内容,并且不被TF接受,都应该打印出来。然后,您可以摆脱它们,或者将它们转换为TensorFlow支持的格式。
https://stackoverflow.com/questions/68191448
复制相似问题