Я хочу изменить dtype одного элемента моего набора данных. (форма элемента = (32,28,28) --> это одна партия изображений 28 на 28 в наборе данных mnist)
Итак, я выполнил следующую команду: tf.cast(dataset.take(1),tf.float32)
.
тип моего набора данных tensorflow.python.data.ops.dataset_ops.PrefetchDataset
Выдало ошибку: : Attempt to convert a value (<TakeDataset shapes: (32, 28, 28), types: tf.uint8>) with an unsupported type (<class 'tensorflow.python.data.ops.dataset_ops.TakeDataset'>) to a Tensor.
Поэтому я взял один элемент из набора данных, используя код:
for batch_data in dataset:
one_element = dataset
break
а потом запустил tf.cast(one_element,tf.float32)
и все работает.
Могу я узнать, почему это происходит?
tf.data.Dataset.take() возвращает набор данных, а не тензор (даже когда вы вызываете take(1)): https://www.tensorflow.org/api_docs/python/tf/data/Dataset