Python 当传递的值为dataset.take(1)时,无法使用tf.cast更改数据类型

Python 当传递的值为dataset.take(1)时,无法使用tf.cast更改数据类型,python,tensorflow,casting,dtype,Python,Tensorflow,Casting,Dtype,我想更改数据集中一个元素的数据类型。(元素形状=(32,28,28)-->这是mnist数据集中的一批28×28图像) 因此,我运行了以下命令:tf.cast(dataset.take(1),tf.float32) 我的数据集的类型是tensorflow.python.data.ops.dataset\u ops.PrefetchDataset 它抛出了一个错误::尝试将不支持类型()的值()转换为张量。 因此,我使用以下代码从数据集中提取了一个元素: for batch_data in

我想更改数据集中一个元素的数据类型。(元素形状=(32,28,28)-->这是mnist数据集中的一批28×28图像)

因此,我运行了以下命令:
tf.cast(dataset.take(1),tf.float32)

我的数据集的类型是
tensorflow.python.data.ops.dataset\u ops.PrefetchDataset

它抛出了一个错误:
:尝试将不支持类型()的值()转换为张量。

因此,我使用以下代码从数据集中提取了一个元素:

    for batch_data in dataset:
        one_element = dataset
        break
然后我运行了
tf.cast(一个元素,tf.float32)
,它就可以工作了

我可以知道为什么会发生这种情况吗?

tf.data.Dataset.take()返回数据集而不是张量(即使调用take(1)):