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())