IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> 学习TensrFlow 2 的随笔(三)tf.data.Dataset -> 正文阅读

[Python知识库]学习TensrFlow 2 的随笔(三)tf.data.Dataset

  • 使用Tensorflow的tf.data.Dataset总结
    1、在使用tf.data建立Dataset时有两种方式:
    使用本地电脑内存上的数据:
    tf.data.Dataset.from_tensors()
    tf.data.Dataset.from_tensor_slices()需要的是列表或者其他作为输入
    使用TFRecord 格式数据:
    tf.data.TFRecordDataset()
    得到的dataset是python的一个可迭代对象
    2、tf.data.Dataset.from_generator用于将Python的生成器转变为Dataset
    例子:这其中必须要有输出类型(output_types)和输出形状(output_shapes)。因为tf.data会建造一个tf.Graph,而图边缘必须要有output_typestf.dtype。
#定义一个count生成器
def count(stop):
  i = 0
  while i<stop:
    yield i
    i += 1
for n in count(5):
  print(n)
>>>0
>>>1
>>>2
>>>3
>>>4
ds_counter = tf.data.Dataset.from_generator(count, args=[25], 
output_types=tf.int32, output_shapes = (), )
#这样就把生成器转为了数据集
for count_batch in ds_counter.repeat().batch(10).take(10):
  print(count_batch.numpy())

3、利用 tf.image.ImageDataGenerator进行数据增强
首先创建一个ImageDataGenerator

img_gen = tf.keras.preprocessing.image.ImageDataGenerator(rescale=1./255, rotation_range=20)

然后使用从路径读取图片不断产生数据,形成的生成器用法与ImageDataGenerator类的方法一致。比如使用flow_from_directory()

images, labels = next(img_gen.flow_from_directory(flowers))
#这里的flow_from_directory就和from keras.preprocessing.image import ImageDataGenerator中的用法一致了,直接就是利用不同的文件生成标签等
>>>Found 3670 images belonging to 5 classes.

最后调用from_genrtor()形成Dataset:

ds = tf.data.Dataset.from_generator(
    lambda: img_gen.flow_from_directory(flowers), 
    output_types=(tf.float32, tf.float32), 
    output_shapes=([32,256,256,3], [32,5])
)
ds.element_spec
>>>(TensorSpec(shape=(32, 256, 256, 3), dtype=tf.float32, name=None),
 TensorSpec(shape=(32, 5), dtype=tf.float32, name=None))

4、使用Dataset.map(f)进行数据预处理
重点理解Dataset.map(f)
这个函数通过对输入数据集的每个元素应用给定的函数来生成一个新的数据集。它是基于python中的map()函数的,但一定要注意的是与python中的有很大不同。
一定注意的是这个函数的输入要求是tf.Tensor,返回的输出也是张量对象tf.Tensor。这里很容易出错,经常直接利用array来作为输入。
最重要的是!!!: 这个函数他是对整个Dataset进行映射,相当于无论原始的Dataset有多少个张量在其中都是直接一对一直接应用函数转换为另一个Dataset。所以映射函数f 一般都是TensorFlow的操作,就是一般都是tf.XX这样的函数。
它的实现是使用标准的TensorFlow操作将一个元素转换为另一个元素。
例子:

#利用文件名称列表创建一个Dataset
list_ds = tf.data.Dataset.list_files(str(flowers_root/'*/*'))
#定义一个预处理函数,从文件中读取图像,将其解码为稠密张量,并调整其大小
def parse_image(filename):
  parts = tf.strings.split(filename, os.sep)
  label = parts[-2]

  image = tf.io.read_file(filename)
  image = tf.io.decode_jpeg(image)
  image = tf.image.convert_image_dtype(image, tf.float32)
  image = tf.image.resize(image, [128, 128])
  return image, label
#使用map进行处理
images_ds = list_ds.map(parse_image)
for image, label in images_ds.take(2):
  show(image, label)

参考:tf.data: Build TensorFlow input pipelines

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-05-09 12:36:21  更:2022-05-09 12:37:29 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 14:43:32-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码