文章目录
数据集的加载1.tf.data.Dataset.from_tensor_slices2.keras.datasets3.tf.data.Dataset.from_tensor_slices1.shuffle-打散-注意:x和y的相对顺序不能打散2.map-可用于数据预处理3.batch-读取batch个(x,y)4.repeat-重复取
数据集的加载
1.tf.data.Dataset.from_tensor_slices
它的作用是切分传入Tensor的第一个维度,生成相应的dataset。
将输入的张量的第一个维度看做样本的个数,沿其第一个维度将tensor切片,得到的每个切片是一个样本数据。实现了输入张量的自动切片。
可以是numpy格式,也可以是tensorflow的tensor的格式,函数会自动将numpy格式转为tensorflow
的tensor格式
输入可以是一个tensor 或 一个tensor字典(字典的每个key对应的value是一个tensor,要求各tensor的
第一个维度相等) 或 一个tensor
tuple(
tuple 的每个元素是一个tensor,要求各tensor的第一个维度
相等)
ts
= tf
.constant
([[1, 2], [3, 4]])
ds
= tf
.data
.Dataset
.from_tensor_slices
(ts
)
2.keras.datasets
mnist数据加载 CIFAR10/100数据集的加载
3.tf.data.Dataset.from_tensor_slices
1.shuffle-打散-注意:x和y的相对顺序不能打散
可以利用idx来记录打散顺序,以确保x和y的相对顺序
2.map-可用于数据预处理
3.batch-读取batch个(x,y)
4.repeat-重复取
import os
os
.environ
['TF_CPP_MIN_LOG_LEVEL'] = '2'
import tensorflow
as tf
from tensorflow
import keras
from tensorflow
.keras
import datasets
def prepare_mnist_features_and_labels(x
,y
):
x
= tf
.cast
(x
,dtype
=tf
.float32
) / 255.0
y
= tf
.cast
(y
,dtype
=tf
.int64
)
y
= tf
.one_hot
(y
,depth
=10)
return x
,y
def mnist_dataset():
(x
,y
),(x_val
,y_val
) = datasets
.fashion_mnist
.load_data
()
ds
= tf
.data
.Dataset
.from_tensor_slices
((x
,y
))
ds
= ds
.map(prepare_mnist_features_and_labels
)
ds
= ds
.shuffle
(60000).batch
(100)
ds_val
= tf
.data
.Dataset
.from_tensor_slices
((x_val
,y_val
))
ds_val
= ds_val
.map(prepare_mnist_features_and_labels
)
ds_val
= ds_val
.shuffle
(10000).batch
(100)
return ds
,ds_val
if __name__
== '__main__':
ds
,ds_val
= mnist_dataset
()