Когда я работаю с Python, я привык работать в среде ноутбука (локально Jupyter Notebook или Google Colab, где тестируются мои примеры ниже).
Иногда я пропускаю print()
команда, когда меня интересует переменная. Пример:
for each in ['a','b','c']:
print(each)
Это напечатает a b c
, как ожидалось.
Однако
for each in ['a','b','c']:
each
ничего не печатает. Если позже я введу новую ячейку each
, записная книжка напечатает 'c'
, как и ожидалось. Если я напишу print(each)
, я получу c
в качестве вывода.
У меня есть набор данных тензорного потока, полученный следующим образом (на основе this ):
import tensorflow_datasets as tfds
import tensorflow as tf
dataset, info = tfds.load('imdb_reviews/subwords8k', with_info=True,
as_supervised=True)
train_dataset, test_dataset = dataset['train'], dataset['test']
Если позже я сделаю в ячейке:
for each in [each for each in train_dataset.take(5)]:
print(each[1])
Вывод будет:
tf.Tensor(0, shape=(), dtype=int64)
tf.Tensor(0, shape=(), dtype=int64)
tf.Tensor(0, shape=(), dtype=int64)
tf.Tensor(1, shape=(), dtype=int64)
tf.Tensor(1, shape=(), dtype=int64)
Если я сделаю:
for each in [each for each in train_dataset.take(5)]:
each[1]
Тогда ничего не будет напечатано. После этого выполняется:
print(each[1])
Дает:
tf.Tensor(1, shape=(), dtype=int64)
Пока:
each[1]
Дает:
<tf.Tensor: shape=(), dtype=int64, numpy=1>
type(each[1])
составляет:
tensorflow.python.framework.ops.EagerTensor
Что распечатывает записная книжка, если явно не указано, что нужно распечатать что-то? Я думаю, что значение, которое следует распечатать, когда print()
равно вызываемый хранится в объекте tensorflow.python.framework.ops.EagerTensor
. Если это правда, как получить доступ к этому значению, не распечатывая его?