Не удается получить значение атрибута формы набора данных в tensorflow?

#tensorflow #tensorflow2.0

#тензорный поток #тензорный поток 2,0 #tensorflow #tensorflow2.0

Вопрос:

Вы можете проверить следующий код,

 import tensorflow as tf
data = tf.data.Dataset.range(10)
tf.print(data)
  

На выходе получается

 <RangeDataset shapes: (), types: tf.int64>
  

Форма пуста.

Ответ №1:

Как и в python range , Dataset.range также не возвращает фактические значения. Вместо этого он возвращает вызываемый объект, подобный генератору RangeDataset . Чтобы получить итератор numpy, который вам нужен RangeDataset.as_numpy_iterator . Затем вы можете преобразовать его в список, как и с помощью list(range(5)) :

 >>> tf.data.Dataset.range(5)
<RangeDataset shapes: (), types: tf.int64>

>>> list(tf.data.Dataset.range(5).as_numpy_iterator())
[0, 1, 2, 3, 4]

>>> range(5)
range(0, 5)

>>> list(range(5))
[0, 1, 2, 3, 4]
  

Дополнительные примеры его использования можно найти в документации