官方地址:https://tensorflow.google.cn/api_docs/python/tf/data/Dataset#from_tensor_slices
创建一个Dataset其元素为给定张量的切片的。
给定的张量沿其第一维被切片。此操作将保留输入张量的结构,删除每个张量的第一维并将其用作数据集维。所有输入张量的第一个尺寸必须相同。
from_tensor_slices( tensors ) 输入为tensors ,返回 Dataset。
一维二维字典都可以处理
说明:该函数是dataset核心函数之一,它的作用是把给定的元组、列表和张量等数据进行特征切片。切片的范围是从最外层维度开始的。如果有多个特征进行组合,那么一次切片是把每个组合的最外维度的数据切开,分成一组一组的。
假设我们现在有两组数据,分别是特征和标签,为了简化说明问题,我们假设每两个特征对应一个标签。之后把特征和标签组合成一个tuple,那么我们的想法是让每个标签都恰好对应2个特征,而且像直接切片,比如:[f11, f12] [t1]。f11表示第一个数据的第一个特征,f12表示第1个数据的第二个特征,t1表示第一个数据标签。
#第一个尺寸要相同
batched_features = tf.constant([[[1, 3], [2, 3]],
[[2, 1], [1, 2]],
[[3, 3], [3, 2]]], shape=(3, 2, 2))
batched_labels = tf.constant([['A', 'A'],
['B', 'B'],
['A', 'B']], shape=(3, 2, 1))
dataset = tf.data.Dataset.from_tensor_slices((batched_features, batched_labels))
for item in dataset.as_numpy_iterator():
print(item)
#输出
(array([[1, 3],
[2, 3]]), array([[b'A'],
[b'A']], dtype=object))
(array([[2, 1],
[1, 2]]), array([[b'B'],
[b'B']], dtype=object))
(array([[3, 3],
[3, 2]]), array([[b'A'],
[b'B']], dtype=object))