首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >未知的图像文件格式。需要JPEG、PNG、GIF、BMP之一

未知的图像文件格式。需要JPEG、PNG、GIF、BMP之一
EN

Stack Overflow用户
提问于 2021-06-30 16:49:21
回答 1查看 259关注 0票数 0

我建立了一个简单的CNN模型,它引发了以下错误:

代码语言:javascript
运行
复制
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。感谢您的帮助。

代码语言:javascript
运行
复制
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
)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-06-30 17:55:34

验证文件夹中的某些文件未采用Tensorflow ( JPEG, PNG, GIF, BMP)接受的格式,或者可能已损坏。文件的扩展名只是指示性的,不会对文件的内容强制执行任何内容。

您也许能够使用python标准库中的imghdr module和一个简单的循环找到罪魁祸首。

代码语言:javascript
运行
复制
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支持的格式。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68191448

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档