Tensorflow2中ImageDataGenerator中flow_from_directory()和image_dataset_from_directory()区别

本文主要是介绍Tensorflow2中ImageDataGenerator中flow_from_directory()和image_dataset_from_directory()区别,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

这两个函数经常用来从文件夹创建和加载深度学习的数据集,有些类似,但也有不同,不同在于函数参数和数据返回的类型不一样。

1.flow_from_directory()

keras_preprocessing.image.image_data_generator.ImageDataGenerator.flow_from_directory()

def flow_from_directory(self,directory: Any,target_size: Tuple[int, int] = (256, 256),color_mode: str = 'rgb',classes: Any = None,class_mode: str = 'categorical',batch_size: int = 32,shuffle: bool = True,seed: Any = None,save_to_dir: Any = None,save_prefix: str = '',save_format: str = 'png',follow_links: bool = False,subset: Any = None,interpolation: str = 'nearest') -> DirectoryIterator

Returns

一个产生(x,y)元组的目录迭代器(DirectoryIterator)。
其中x是包含一批(batch_size,* target_size,channels)类型的图像的numpy数组,y是对应标签的numpy数组。

参数说明:

  • 目录(directory):字符串,目标目录的路径。每个类应该包含一个子目录。生成器中将包含每个子目录树中的任何PNG、JPG、BMP、PPM或TIF图像。有关详细信息,请参阅(https://gist.github.com/fchollet/0830affa1f7f19fd47b06d4cf89ed44d)。
  • 目标大小(target_size):整数的元组(高度、宽度)。默认值:(256,256)。将调整找到的所有图像的尺寸。
  • 颜色_模式(color_mode):“灰度”、“rgb”、“rgba”之一。默认值:“rgb”。是否将图像转换为具有1、3或4个通道。
  • 类列表(classes):类子目录的可选列表。(例如,“狗”、“猫”)。默认值:无。如果没有提供,将根据目录下的子目录名称/结构自动推断类列表,其中每个子目录将被视为不同的类(将映射到标签索引的类的顺序将是字母数字)。包含从类名到类索引的映射的字典可以通过属性class_indexes获得。
  • 类模式:确定返回的标签数组的类型:“分类(“categorical”)”、“二进制(“binary”)”、“稀疏(“sparse”)”、“输入(“input”)”、“无(None)”模式之一。默认值:“分类”。

          “categorial”则是2维one-hot编码标签;
          “binary”则是一维二进制标签;
          “sparse”是1维整数标签;
          “input”是与输入图像相同的图像(主要用于自动编码器);
           None,则不会返回任何标签(生成器将只生成一批图像数据,与model.predict_generator()一起使用非常有用)。请注意,在类模式为“无”的情况下,数据仍然需要驻留在目录的子目录中,以便它正常工作。

  • 批次大小(batch_size):数据批次的大小(默认值:32)。
  • 随机播放(shuffle):是否随机播放数据(默认值:True)。如果设置为False,则按字母数字顺序对数据进行排序。
  • 种子(seed):可选的随机种子,用于洗牌和转换。
  • 保存路径(save_to_dir):none或str(默认值:none)。这允许您选择指定一个目录,将生成的增强图片保存到该目录(对于可视化所做的操作很有用)。
  • 保存前缀(save_prefix): Str. Prefix用于保存图片的文件名(仅当设置了save_to_dir时才相关)。
  • 保存格式(save_format):“png”、“jpeg”之一(仅当设置了save_to_dir时才相关)。默认值:“png”。
  • 跟随链接(follow_links):是否跟随类子目录内的符号链接(默认值:False)。
  • 子集(subset):如果在ImageDataGenerator中设置了验证分割(validation_split),则为数据的子集(训练集"training" 或验证集"validation")。
  • 插值(interpolation):当目标大小与加载的图像大小不同时,用于对图像重新采样的插值方法。支持的方法有最近邻"nearest"、双线性"bilinear"和双三次"bicubic"。如果安装了PIL版本1.1.3或更高版本,还支持“lanczos”。如果安装了PIL 3.4.0或更高版本,还支持“Box”和“Hamming”。默认情况下,使用“nearest”。

来自:flow_from_directory返回值

2.image_dataset_from_directory()

Function

# from tensorflow.keras.preprocessing import image_dataset_from_directorytf.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,
)

Returns

一个tf.data.Dataset对象。

  • 如果label_mode为None,它将生成float32张量,其shape(batch_size, image_size[0], image_size(1), num_channels),并对图像进行编码(有关num_channels的规则,参见下文)。

  • 否则,将生成一个元组(images, labels),其中图像的shape(batch_size, image_size[0], image_size(1), num_channels),并且labels遵循下面描述的格式。

  • 如果label_mode 是 int, labels是形状为(batch_size, )int32张量

  • 如果label_mode 是 binarylabels是形状为(batch_size, 1)的1和0的float32张量。

  • 如果label_mode 是 categoriallabels是形状为(batch_size, num_classes)float32张量,表示类索引的one-hot编码。

color_mode 是 grayscale, 图像张量有1个通道;color_mode 是 rgb, 图像张量有3个通道;color_mode 是 rgba, 图像张量有4个通道。

来自:tf.keras.preprocessing.image_dataset_from_directory

这篇关于Tensorflow2中ImageDataGenerator中flow_from_directory()和image_dataset_from_directory()区别的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/614590

相关文章

Springboot @Autowired和@Resource的区别解析

《Springboot@Autowired和@Resource的区别解析》@Resource是JDK提供的注解,只是Spring在实现上提供了这个注解的功能支持,本文给大家介绍Springboot@... 目录【一】定义【1】@Autowired【2】@Resource【二】区别【1】包含的属性不同【2】@

Java中的String.valueOf()和toString()方法区别小结

《Java中的String.valueOf()和toString()方法区别小结》字符串操作是开发者日常编程任务中不可或缺的一部分,转换为字符串是一种常见需求,其中最常见的就是String.value... 目录String.valueOf()方法方法定义方法实现使用示例使用场景toString()方法方法

分辨率三兄弟LPI、DPI 和 PPI有什么区别? 搞清分辨率的那些事儿

《分辨率三兄弟LPI、DPI和PPI有什么区别?搞清分辨率的那些事儿》分辨率这个东西,真的是让人又爱又恨,为了搞清楚它,我可是翻阅了不少资料,最后发现“小7的背包”的解释最让我茅塞顿开,于是,我... 在谈到分辨率时,我们经常会遇到三个相似的缩写:PPI、DPI 和 LPI。虽然它们看起来差不多,但实际应用

GORM中Model和Table的区别及使用

《GORM中Model和Table的区别及使用》Model和Table是两种与数据库表交互的核心方法,但它们的用途和行为存在著差异,本文主要介绍了GORM中Model和Table的区别及使用,具有一... 目录1. Model 的作用与特点1.1 核心用途1.2 行为特点1.3 示例China编程代码2. Tab

Nginx指令add_header和proxy_set_header的区别及说明

《Nginx指令add_header和proxy_set_header的区别及说明》:本文主要介绍Nginx指令add_header和proxy_set_header的区别及说明,具有很好的参考价... 目录Nginx指令add_header和proxy_set_header区别如何理解反向代理?proxy

Java中&和&&以及|和||的区别、应用场景和代码示例

《Java中&和&&以及|和||的区别、应用场景和代码示例》:本文主要介绍Java中的逻辑运算符&、&&、|和||的区别,包括它们在布尔和整数类型上的应用,文中通过代码介绍的非常详细,需要的朋友可... 目录前言1. & 和 &&代码示例2. | 和 ||代码示例3. 为什么要使用 & 和 | 而不是总是使

C++中函数模板与类模板的简单使用及区别介绍

《C++中函数模板与类模板的简单使用及区别介绍》这篇文章介绍了C++中的模板机制,包括函数模板和类模板的概念、语法和实际应用,函数模板通过类型参数实现泛型操作,而类模板允许创建可处理多种数据类型的类,... 目录一、函数模板定义语法真实示例二、类模板三、关键区别四、注意事项 ‌在C++中,模板是实现泛型编程

Spring中@RestController和@Controller的使用及区别

《Spring中@RestController和@Controller的使用及区别》:本文主要介绍Spring中@RestController和@Controller的使用及区别,具有很好的参考价... 目录Spring中@RestController和@Controller使用及区别1. 基本定义2. 使

Qt 中 isHidden 和 isVisible 的区别与使用小结

《Qt中isHidden和isVisible的区别与使用小结》Qt中的isHidden()和isVisible()方法都用于查询组件显示或隐藏状态,然而,它们有很大的区别,了解它们对于正确操... 目录1. 基础概念2. 区别清见3. 实际案例4. 注意事项5. 总结1. 基础概念Qt 中的 isHidd

Spring、Spring Boot、Spring Cloud 的区别与联系分析

《Spring、SpringBoot、SpringCloud的区别与联系分析》Spring、SpringBoot和SpringCloud是Java开发中常用的框架,分别针对企业级应用开发、快速开... 目录1. Spring 框架2. Spring Boot3. Spring Cloud总结1. Sprin