Print () или нет print () тензорного потока. python .framework.ops.EagerTensor - разница между print (eagertensor) и eagertensor в ячейке записной книжки - PullRequest
0 голосов
/ 13 июля 2020

Когда я работаю с 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. Если это правда, как получить доступ к этому значению, не распечатывая его?

...