zoukankan      html  css  js  c++  java
  • tensorflow学习013——tf.data模块简介及用法

    3.1 tf.data模块简介及用法

    可以从多个数据源非常方便的读取数据
    在第一个epoch中缓存下载,接下来的epoch处理的速度就会变快
    使用简单的代码构建复杂的输入,可以轻松处理大量数据、不同数据格式以及复杂的转换
    tf.data.Dataset 表示一系列的元素、图片,每个元素包含一个或多个Tensor对象,例如在图片通道中,一个元素可能是单个训练样本,具有一对表示图片数据和标签的张量。

    创建tf.data.Dataset方式
    方式一
    直接从Tensor创建Dataset
    例如Dataset.from_tensor_slices()
    参数也可以是Numpy(tensorflow会自动将它转换成Tensor),Tensor,列表
    方式二
    通过对一个或多个tf.data.Dataset对象来使用变换(例如Dataset.zip)来创建Dataset

    一个Dataset对象包含多个元素,每个元素的结构都相同。每个元素包含一个或多个tf.Tensor对象,这些对象被称为组件。Dataset的属性由构成该Dataset的元素的属性映射得到,元素可以是单个张量、张量元组,也可以是张量的嵌套元组。

    使用列表创建
    dataset = tf.data.Dataset.from_tensor_slices([1,2,3,4,5,6,7])
    for ele in dataset:
        print(ele,ele.numpy())
    
    结果如图3-1所示

    image
    图3-1

    可以使用迭代获取每个元素,并且可以使用.numpy()将其转换为array格式

    二维列表创建
    dataset = tf.data.Dataset.from_tensor_slices([[1,2],[3,4],[5,6]])
    for ele in dataset:
        print(ele,ele.numpy())
    
    结果如图3-2所示

    image
    图3-2
    其shape为(2,)说明,每个元素长度为2

    使用字典创建
    dataset = tf.data.Dataset.from_tensor_slices({'a':[1,2,3,4],
                                                  'b':[5,6,7,8],
                                                  'c':[10,11,12,13]})
    for ele in dataset:
        print(ele)
    
    字典形成的Dataset比较特殊,如图3-3所示。

    image
    图3-3

    take()方法
    for ele in dataset.take(4): #只遍历前4项
        print(ele)
    

    训练网络的时候,每一轮训练的数据的顺序不一样,有助于网络的训练,否则可能会出现网络记忆了数据的顺序的可能。
    dataset = dataset.shuffle(7) #打乱数据的顺序,里面数字的大小一般等于元素的个数

    dataset = dataset.repeate(count = 3) #将dataset的数据重复三次,如果之前没有进行shuffle,那么会按照顺序重复三次,如果进行了shuffle,那么每一次的重复的数据都是随机排序的。不写参数,默认重复无数次

    dataset = dataset.batch(4) 表示每4个元素作为一个数据绑定,也就是训练的时候,每次处理4个元素

    可以使用map()对每个元素进行变换
    dataset = dataset.map(tf.square) 获得的新数据为原先的平方


    作者:孙建钊
    出处:http://www.cnblogs.com/sunjianzhao/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

  • 相关阅读:
    类型"ImportMeta"上不存在属性"env"(Property 'env' does not exist on type 'ImportMeta')
    微信小程序开发常见问题
    js构建沙箱环境sandbox
    js 判断两个对象是否相同
    js判断类型方法
    初学knockoutjs记录4——Computed observables依赖监控(1 Using computed observables使用计算监控属性)
    初学knockoutjs记录3——Observables监控属性(2 Observable Arrays 监控数组)
    初学knockoutjs记录2——Observables监控属性(1 创建带有监控属性的view model)
    初学knockoutjs记录1——入门介绍及下载安装
    C、C++、JAVA编译器是如何处理未经初始化的变量的。
  • 原文地址:https://www.cnblogs.com/sunjianzhao/p/15581295.html
Copyright © 2011-2022 走看看