tf.data模块
基于tf.data API, 我们可以使用简单的代码来构建复杂的输入,可以轻松处理大量数据、不同的数据格式以及复杂的转换。
tf.data API 最重要的概念:tf.data.Dataset 表示一系列元素。其中每个元素包含一个或多个Tensor对象。例如,在图片管道中,一个元素可能是单个训练样本,具有一对表示图片数据和标签的张量。
有两种方式来创建tf.data.Dataset
1、直接从Tensor创建Dataset
例如Dataset.from_tensor_slices();当然Numpy也是可以的,TensorFlow会自动将其转化为Tensor。
2、通过对一个或多个tf.data.Dataset对象来使用变换(例如Dataset.zip)来创建Dataset。
认识Dataset
一个Dataset对象包含多个元素,每个元素的结构都相同。每个元素包含一个或多个tf.Tensor对象,这些对象被称为组件。
使用Dataset
在TensorFlow2.0环境下可以直接对Dataset经迭代处理。
tf.data模块的使用:
# -*- coding: UTF-8 -*-
"""
Author: LGD
FileName: use_tf_data
DateTime: 2020/11/24 09:34
SoftWare: PyCharm
"""
import tensorflow as tf
# 将传入的数据转化为tensor格式
# dataset1 = tf.data.Dataset.from_tensor_slices([1, 2, 3, 4, 5, 6, 7])
# print(dataset1)
# for element in dataset1:
# print(element) # 输出的是tensor数据格式
# print(element.numpy()) # tensor里面有个numpy()方法,可以将tensor格式转化为numpy格式输出(2.0版本专有)
# dataset2 = tf.data.Dataset.from_tensor_slices([[1, 2], [3, 4], [5, 6]])
# print(dataset2)
# for element in dataset2:
# print(element) # 输出的是tensor数据格式
# print(element.numpy()) # tensor里面有个numpy()方法,可以将tensor格式转化为numpy格式输出(2.0版本专有)
# dataset_dic = tf.data.Dataset.from_tensor_slices({
# 'a': [1, 2, 3, 4],
# 'b': [6, 7, 8, 9],
# 'c': [12, 13, 14, 15]
# })
#
# print(dataset_dic) # <TensorSliceDataset shapes: {a: (), b: (), c: ()}, types: {a: tf.int32, b: tf.int32, c: tf.int32}>
#
# for ele in dataset_dic:
# print(ele)
import numpy as np
# dataset_np = tf.data.Dataset.from_tensor_slices(np.array([1, 2, 3, 4, 5, 6, 7]))
#
# # take只取出前几个
# for element in dataset_np.take(4): # 取出前四个
# print(element)
# print(element.numpy())
#
# print(dataset_np.take(1))
# print(next(iter(dataset_np.take(1))))
#
# # dataset对于数据的变换
# # 1、乱序
# dataset = dataset_np.shuffle(7)
# for ele in dataset:
# print(ele.numpy())
#
# # 2、循环重复
# dataset = dataset.repeat(count=3)
# print("循环")
# for ele in dataset:
# print(ele.numpy())
#
# # 3、数据集划分批次
# dataset = dataset.batch(3) # 划分3个批次
# for ele in dataset:
# print(ele.numpy())
dataset = tf.data.Dataset.from_tensor_slices(np.array([1, 2, 3, 4, 5, 6, 7]))
# 数据平方
dataset = dataset.map(tf.square)
for ele in dataset:
print(ele.numpy())
对人工智能和计算机视觉技术感兴趣的小伙伴们可以关注一下下面的公众号哟,还有海量资源在线更新,更有精彩电影等你来下载。