AttributeError:类型对象“ DatasetV2”没有属性“ from_tensor”

时间:2019-09-11 14:00:55

标签: python tensorflow

我正在学习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)

没有问题。

1 个答案:

答案 0 :(得分:0)

对于您的情况tf.Data可以通过两种可能的方式创建:tf.data.Dataset.from_tensorstf.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个张量。