flow_from_directory 发现 0 张图 0 个 类别问题

报错为:Found 0 images belonging to 0 classes.

这个问题是由于文件夹路径设置错了,比如热狗数据集,数据集路径分别为:

hotdog\train\hotdog

hotdog\train\no-hotdog

hotdog\test\hotdog

hotdog\test\no-hotdog

import pathlib
import tensorflow as tf

file = r'F:\hotdog'
# 获取数据集

train_dir = file + r'\train'
test_dir = file + r'\test'
# 获取训练集数据
train_dir = pathlib.Path(train_dir)
train_count = len(list(train_dir.glob('*/*.png')))  # .glob查找文件个数
# 获取测试集数据
test_dir = pathlib.Path(test_dir)
test_count = len(list(test_dir.glob('*/*.png')))

train_data_gen = image_generator.flow_from_directory(directory=str(train_dir),
                                                     batch_size=BATCH_SIZE,
                                                     target_size=(IMG_HEIGHT, IMG_WIDTH),
                                                     shuffle=True)

要注意文件的路径只到train和test才对,如上代码所示

里面包含两个文件夹,分别对应为两个类,hotdog和no-hotdog

keras根据hotdog和no-hotdog这两个文件夹识别为两个类

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
`decode_predictions` 函数是 Keras 模型中用于将模型输出的概率向量转换成可读性更强的标签的函数。它的输出结果是一个列表,其中每个元素都是一个包含前 K 个预测结果的元组列表。如果要将多张像的预测结果转化成一张表格输出,可以使用 Pandas 库来实现。 具体来说,可以将每张像的预测结果转化成一个 Pandas DataFrame,再将所有 DataFrame 合并成一个大的 DataFrame。具体代码如下所示: ``` python import pandas as pd from keras.applications.resnet50 import ResNet50, decode_predictions from keras.preprocessing import image # 加载 ResNet50 模型 model = ResNet50(weights='imagenet') # 读取多张片并进行预测 img1 = image.load_img('path/to/image1.jpg', target_size=(224, 224)) img2 = image.load_img('path/to/image2.jpg', target_size=(224, 224)) img3 = image.load_img('path/to/image3.jpg', target_size=(224, 224)) x1 = image.img_to_array(img1) x2 = image.img_to_array(img2) x3 = image.img_to_array(img3) x = np.array([x1, x2, x3]) preds = model.predict(x) # 将预测结果转化成 Pandas DataFrame 并合并成一个大的 DataFrame df_list = [] for i in range(len(preds)): df = pd.DataFrame(decode_predictions(preds[i], top=5)[0], columns=['id', 'label', 'probability']) df['image'] = f'image{i+1}' df_list.append(df) result = pd.concat(df_list) # 输出结果 DataFrame print(result) ``` 上面的代码中,首先加载了 ResNet50 模型,并读取了三张像进行预测。接着,将每张像的预测结果转化成一个 Pandas DataFrame,并添加一列来表示该结果来自哪张片。最后,将所有 DataFrame 合并成一个大的 DataFrame,并输出结果。输出结果类似于下面的表格: ``` id label probability image 0 n02119789 kit_fox 0.148583 image1 1 n02124075 Egyptian_cat 0.132016 image1 2 n02119022 red_fox 0.128331 image1 3 n02123045 tabby 0.103661 image1 4 n02123159 tiger_cat 0.054983 image1 0 n02123394 Persian_cat 0.457205 image2 1 n02124075 Egyptian_cat 0.285693 image2 2 n02123045 tabby 0.068564 image2 3 n02123159 tiger_cat 0.058704 image2 4 n02127052 lynx 0.024555 image2 0 n02123394 Persian_cat 0.262646 image3 1 n02124075 Egyptian_cat 0.219869 image3 2 n02123045 tabby 0.166961 image3 3 n02123159 tiger_cat 0.155977 image3 4 n02127052 lynx 0.048136 image3 ``` 其中,每行表示一个预测结果,包括像 ID、预测标签、预测概率和所属像。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

空花缱绻三分

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值