我正在学习Tensorflow 2.0,运行以下代码时出现错误:
data = np.random.randint(0,10, (3,4))
dataset1 = tf.data.Dataset.from_tensor(data)
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-38-9873d7e2b8bc> in <module>()
----> 1 dataset1 = tf.data.Dataset.from_tensor(data)
AttributeError: type object 'DatasetV2' has no attribute 'from_tensor'
此处相同:
e= tf.data.Dataset.from_element(10)
AttributeError: type object 'DatasetV2' has no attribute 'from_element'
但是我可以运行代码:
dataset = tf.data.Dataset.range(10)
没有问题。
答案 0 :(得分:0)
对于您的情况tf.Data可以通过两种可能的方式创建:tf.data.Dataset.from_tensors
和tf.data.Dataset.from_tensor_slices
。
tf.data.Dataset.from_tensors
将使用包含给定张量的单个元素创建一个Dataset
。以下是通过示例输入得到的示例。
data = np.random.randint(0,10, (3,4))
dataset = tf.data.Dataset.from_tensors(data)
for i in dataset.take(-1):
print(i)
#Print output
tf.Tensor(
[[1 4 0 2]
[6 3 5 6]
[4 2 9 6]], shape=(3, 4), dtype=int64)
您可以看到它已经创建了给定形状的单个张量。
tf.data.Dataset.from_tensor_slices
顾名思义,它会创建张量的切片。
给定的张量沿其第一维被切片。此操作
保留输入张量的结构,除去第一维
张量并使用它作为数据集维度。所有输入张量
尺寸必须与第一尺寸相同。
dataset2 = tf.data.Dataset.from_tensor_slices(data)
for i in dataset2.take(-1):
print(i)
#Print Output
tf.Tensor([1 4 0 2], shape=(4,), dtype=int64)
tf.Tensor([6 3 5 6], shape=(4,), dtype=int64)
tf.Tensor([4 2 9 6], shape=(4,), dtype=int64)
您可以看到它沿着形状(3,4)的数据的第一个维度进行切片,从而创建了3个张量。