tf.data.Dataset.from_tensor_slices
函数创建一个代表数组切片的 tf.data.Dataset
。系统会在第一个维度内对该数组进行切片,例:
import tensorflow as tf
import numpy as np
features, labels = (np.random.sample((6,3)),np.random.sample((6,1)))
print((features, labels))
data = tf.data.Dataset.from_tensor_slices((features,labels))
print(list(data.as_numpy_iterator()))
使用tf.data.DataSet存储与处理数据。
对于处理过程中产生的对象,如果想要查看某个对象中包含的具体数据内容。通常会有两种方式:list(as_numpy_iterator())和numpy()
那么应该在什么时候该选择哪一个呢?
答案是:
当对象类型是Tensor对象时,选择numpy(),而tensor对象可以直接使用切片的方式选择出数据。
当对象类型是windowDataSet等transform方法处理后的DataSet类型,且其子对象是tensor对象时, 可以选择list(as_numpy_iterator()),这里是tf.data.Dataset.from_tensor_slices()处理过的,所以用list(as_numpy_iterator())查看输出。
输出:
(array([[0.98895762, 0.26454848, 0.0183561 ],
[0.51641159, 0.8714609 , 0.2763759 ],
[0.74152886, 0.74101885, 0.39290169],
[0.27559503, 0.36266356, 0.23744076],
[0.5434669 , 0.95196242, 0.00877751],
[0.28143582, 0.47334865, 0.71569477]]), array([[0.37186106],
[0.68210544],
[0.19374422],
[0.75647886],
[0.25159219],
[0.31047784]]))
[(array([0.98895762, 0.26454848, 0.0183561 ]), array([0.37186106])), (array([0.51641159, 0.8714609 , 0.2763759 ]), array([0.68210544])), (array([0.74152886, 0.74101885, 0.39290169]), array([0.19374422])), (array([0.27559503, 0.36266356, 0.23744076]), array([0.75647886])), (array([0.5434669 , 0.95196242, 0.00877751]), array([0.25159219])), (array([0.28143582, 0.47334865, 0.71569477]), array([0.31047784]))]