• 深度学习之tf.keras.preprocessing.image_dataset_from_directory()函数



    活动地址:CSDN21天学习挑战赛
    来自🚩 作者:K同学啊

    做深度学习的时候会遇到一些不明白的函数,写一下博客做一下记录方便后续查询。

    数据原型

    tf.keras.preprocessing.image_dataset_from_directory(
        directory,
        labels="inferred",
        label_mode="int",
        class_names=None,
        color_mode="rgb",
        batch_size=32,
        image_size=(256, 256),
        shuffle=True,
        seed=None,
        validation_split=None,
        subset=None,
        interpolation="bilinear",
        follow_links=False,
    )
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    函数作用

    将文件夹中的数据加载到tf.data.Dataset中,且加载的同时会打乱数据。

    举例说明:
    如果自己的目录结构为如下所示:

    main_directory/
    …class_a/
    …a_image_1.jpg
    …a_image_2.jpg
    …class_b/
    …b_image_1.jpg
    …b_image_2.jpg
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    调用函数image_dataset_from_directory(main_directory, labels=‘inferred’) 将返回一个tf.data.Dataset, 该数据集从子目录class_a和class_b生成批次图像,同时生成标签0和1(0对应class_a,1对应class_b),该函数支持的图像格式:jpeg, png, bmp, gif. 动图被截断到第一帧。

    参数介绍

    • directory: 数据所在目录。如果标签是inferred(默认),则它应该包含子目录,每个目录包含一个类的图像。否则,将忽略目录结构。

    • labels: inferred(标签从目录结构生成),或者是整数标签的列表/元组,其大小与目录中找到的图像文件的数量相同。标签应根据图像文件路径的字母顺序排序(通过Python中的os.walk(directory)获得)。

    • label_mode:

      • int:标签将被编码成整数(使用的损失函数应为: sparse_categorical_crossentropy loss)。
      • categorical:标签将被编码为分类向量(使用的损失函数应为:categorical_crossentropy loss)。
      • binary:意味着标签(只能有2个)被编码为值为0或1的float32标量(例如:binary_crossentropy)。
      • None:(无标签)。
    • class_names: 仅当labels为inferred时有效。这是类名称的明确列表(必须与子目录的名称匹配)。用于控制类的顺序(否则使用字母数字顺序)。

    • color_mode: grayscale、rgb、rgba之一。默认值:rgb。图像将被转换为1、3或者4通道。

    • batch_size: 数据批次的大小。默认值:32

    • image_size: 从磁盘读取数据后将其重新调整大小。默认:(256,256)。由于管道处理的图像批次必须具有相同的大小,因此该参数必须提供。

    • shuffle: 是否打乱数据。默认值:True。如果设置为False,则按字母数字顺序对数据进行排序。

    • seed: 用于shuffle和转换的可选随机种子

    • validation_split: 0和1之间的可选浮点数,可保留一部分数据用于验证。

    • subset: training或validation之一。仅在设置validation_split时使用。

    • validation_split: 0和1之间的可选浮点数,可保留一部分数据用于验证。

    • subset: training或validation之一。仅在设置validation_split时使用。

    • interpolation: 字符串,当调整图像大小时使用的插值方法。默认为:bilinear。支持bilinear, nearest, bicubic, area, lanczos3, lanczos5, gaussian, mitchellcubic。

    • follow_links: 是否访问符号链接指向的子目录。默认:False。

  • 相关阅读:
    AnaConda安装过程
    Flink JobManager 内存占用大 问题
    【LUA】如何借助redis的lua功能实现库存扣减
    关于《Mybatis》的小总结【一】
    将下拉弹层渲染节点固定在触发器的父元素中
    LeetCode 146. LRU 缓存(C++)*
    c++结构体
    【探索SpringCloud】服务发现-Nacos服务端数据结构和模型
    离子交换树脂去除镍,除镍设备及工艺
    【目标检测】MMDetection的安装与基础使用
  • 原文地址:https://blog.csdn.net/xp_fangfei/article/details/126454513