tensorFlow2.1下的tf.data.Dataset.from_tensor_slices()的用法
一、总结
一句话总结:
将输入的张量的第一个维度看做样本的个数,沿其第一个维度将tensor切片,得到的每个切片是一个样本数据。实现了输入张量的自动切片。
# from_tensor_slices 为输入张量的每一行创建一个带有单独元素的数据集 ts = tf.constant([[1, 2], [3, 4]]) ds = tf.data.Dataset.from_tensor_slices(ts) # [1, 2], [3, 4]
二、tensorFlow2.1下的tf.data.Dataset.from_tensor_slices()的用法
转自或参考:tensorFlow2.1下的tf.data.Dataset.from_tensor_slices()和batch()的用法
https://www.pythonheidong.com/blog/article/287038/
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的第一个维度相等)。
示例 1:
import tensorflow as tf
t = tf.range(10.)[:, None]
t = tf.data.Dataset.from_tensor_slices(t)
#<TensorSliceDataset shapes: (1,), types: tf.float32>
for i in t:
print(i.numpy())
# [0.]
# [1.]
# [2.]
# [3.]
# [4.]
# [5.]
# [6.]
# [7.]
# [8.]
# [9.]
示例2:
# from_tensor_slices 为输入张量的每一行创建一个带有单独元素的数据集
ts = tf.constant([[1, 2], [3, 4]])
ds = tf.data.Dataset.from_tensor_slices(ts) # [1, 2], [3, 4]
2、batch函数
用示例看下batch函数
batch_t = t.batch(3)
for i in batch_t:
print(i.numpy())
[[0.]
[1.]
[2.]]
[[3.]
[4.]
[5.]]
[[6.]
[7.]
[8.]]
[[9.]]