Tensorflow学习之tf.keras(一) tf.keras.preprocessing(未完)

 

概述:

Keras 数据预处理工具。

模块:

image       模块:   一组用于图像数据实时数据增强的工具。

sequence模块:   用于预处理序列数据的实用程序。

text    模块:   用于文本输入预处理的实用程序。

函数:

image_dataset_from_directory(...):从目录中的图像文件生成tf.data.Dataset

text_dataset_from_directory(...):从目录中的文本文件生成tf.data.Dataset 。

timeseries_dataset_from_array(...):在作为数组提供的时间序列上创建滑动窗口的数据集。

tf.keras.preprocessing.image_dataset_from_directory

从目录中的图像文件生成tf.data.Dataset 。

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
)

如果您的目录结构是:

main_directory/
...class_a/
......a_image_1.jpg
......a_image_2.jpg
...class_b/
......b_image_1.jpg
......b_image_2.jpg

然后调用 image_dataset_from_directory(main_directory, labels='inferred') 将返回一个 tf.data.Dataset,它从子目录 class_a 和 class_b 中生成批量图像,以及标签 0 和 1(0 对应于 class_a,1 对应于 class_b)。

支持的图片格式:jpeg、jpg、png、bmp、gif。 动画 gif 被截断到第一帧。

    参数

 

directory

数据所在的目录。 如果标签是“inferred”,它应该包含子目录,每个子目录包含一个类的图像。 否则,目录结构将被忽略。

labels

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

label_mode

  • 'int':表示标签被编码为整数(例如对于 sparse_categorical_crossentropy 损失)。
  • 'categorical' 意味着标签被编码为一个分类向量(例如用于 categorical_crossentropy 损失)。
  • 'binary' 意味着标签(只能有 2 个值)被编码为值为 0 或 1 的 float32 标量(例如对于 binary_crossentropy)。
  • 无(无标签)。

class_names

仅当“标签”为“inferred”时才有效。这是类名的显式列表(必须匹配子目录的名称)。用于控制类的顺序(否则使用字母数字顺序)。

color_mode

grayscale”、“rgb”、“rgba”之一。 默认值:“RGB”。图像是否将转换为具有 1、3 或 4 个通道。

batch_size

批量数据的大小。 默认值:32。

image_size

从磁盘读取图像后调整图像大小的大小。默认为 (256, 256)。 由于通道处理必须具有相同大小的批量图像,因此必须提供。

shuffle

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

seed

用于shuffling 和transformations的可选随机种子。

validation_split

0 到 1 之间的可选浮点数,用作验证数据的训练数据的一部分。

subset

“training”或“validation”之一。 仅在设置了validation_split 时使用。

interpolation

字符串,调整图像大小时使用的插值方法。默认为bilinear。支持bilinearnearestbicubicarealanczos3lanczos5gaussianmitchellcubic.

注:参照tf.image.resize

follow_links

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

    返回

 

一个 tf.data.Dataset  对象。

  • 否则,它会生成一个元组(images, labels),其中图像具有形状(batch_sizeimage_size[0]image_size[1]num_channels),标签遵循下面描述的格式。
  • 如果 label_modeNone,则生成形状为 (batch_size, image_size[0], image_size[1], num_channels)的 float32 张量,、编码图像(有关 num_channels 的规则,请参见下文)。

关于标签格式的规则:

  • 如果 label_modeint,则标签是形状为 (batch_size,)int32 张量。
  • 如果 label_modebinary,则标签是形状为 (batch_size, 1) 的 1 和 0 的 float32 张量。
  • 如果 label_modecategorial的,则标签是形状为 (batch_size, num_classes)float32 张量,表示类索引的one-hot编码。

关于生成图像中通道数的规则:

  • 如果 color_modegrayscale(灰度图),则图像张量中有 1 个通道。
  • 如果 color_modergb,则图像张量中有 3 个通道。
  • 如果 color_modergba,则图像张量中有 4 个通道。

非常需要注意的事:目录位置不能是当前图像的文件夹

我图像存在了项目下的img中,但是此时如果我将

D:\Python_Subject\load_local_datasets\img 作为目录

importtensorflowastf

datasets=tf.keras.preprocessing.image_dataset_from_directory(
directory="D:/Python_Subject/load_local_datasets/img",
batch_size=1,
shuffle=False,
)

结果就是找不到图片

但是我将地址修改为

D:\Python_Subject\load_local_datasets

importtensorflowastf

datasets=tf.keras.preprocessing.image_dataset_from_directory(
directory="D:/Python_Subject/load_local_datasets",
batch_size=1,
shuffle=False,
)

便成功了

  • 0
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值