文章目录
一、数据集的加载
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的第一个维度
相等)
# from_tensor_slices 为输入张量的每一行创建一个带有单独元素的数据集
ts = tf.constant([[1, 2], [3, 4]])
ds = tf.data.Dataset.from_tensor_slices(ts) # [1, 2], [3, 4]
方法
-
shuffle—打乱
shuffle-打散-注意:x和y的相对顺序不能打散
可以利用idx来记录打散顺序,以确保x和y的相对顺序
-
batch—多个样本数据转换成一个batch,非常有利于加速计算
batch-读取batch个(x,y)
-
map—转换(数据预处理)
-
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
# 数据集
# 数据集加载-->dataset-->ont_hot等数据预处理-->shuffle-->batchm
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()
2.keras.datasets—小型常用数据集的API接口
常用的数据集有:
- boston housing
- mnist/fashion mnist
- cifar10/100
- imdb
二、张量实战
- 前向传播
- 梯度下降
- 评估/测试
# 将无关信息屏蔽掉
import os
# 取值有四个:0,1,2,3,分别对应INFO,WARNING,ERROR,FATAL
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras