Когда tf.print действительно будет работать как положено (то есть вывести значения тензоров и переменных)? - PullRequest
1 голос
/ 22 апреля 2020

Прежде всего, я использую TensorFlow 2.0, и я забочусь только об этой версии или выше (и я уже забочусь о таком программном обеспечении, которое вызывает только головные боли).

* Документация TensorFlow из tf.print говорит

Распечатать указанные входные данные.

, а затем

Оператор TensorFlow, который печатает указанные входы для желаемого выходного потока или уровня регистрации. Входными данными могут быть

  • плотные или
  • разреженные тензоры ,
  • примитивные python объекты ,
  • структуры данных, содержащие тензоры и
  • для печати Python объекты .

Печатные тензоры будут рекурсивно показывать первый и последний элементы каждого измерения для суммирования.

Это все очень хорошо, но я до сих пор не понимаю, где tf.print будет РАБОТАТЬ (т.е. печатать ЗНАЧЕНИЯ переменных и тензоров) в моем коде. Конечно, само собой разумеется, мне было наплевать на символическое представление c тензоров, переменных или чего-либо еще. Всякий раз, когда я пытаюсь использовать tf.print, я хочу видеть ЗНАЧЕНИЯ (действительные числа, векторы или матрицы).

Я пытался использовать tf.print в нескольких случаях и в нескольких местах, например,

  • в методе, который вызывается из метода __init__ пользовательский слой, который вызывается во время построения модели (то есть перед компиляцией модели), чтобы напечатать значение тензора (по крайней мере, это то, что возвращает type(my_var), то есть возвращает <class 'tensorflow.python.framework.ops.Tensor'>), но ничего не печатается. Если я попытаюсь добавить @tf.function (я все еще не использую эту функцию!), Ничего не изменится. Согласно документации выше, tf.print должен печатать тензоры, моя переменная - тензор, и TensorFlow решает игнорировать мой вызов, и тогда возникает вопрос, почему я решил использовать TF? Почему?

    Кроме того, я использую TF 2.0 и, даже если я не использую декоратор, @tf.function, print(tf.executing_eagerly()) печатает False, что на самом деле и ожидалось.

  • в пользовательской функции потерь, где происходит похожее поведение (т.е. иногда что-то печатается, иногда нет, иногда я пытаюсь добавить декоратор @tf.function к пользовательской функции потерь и вижу, что-то меняется, но ничего изменения, или, может быть, да).

Хорошо, так что, как вы можете видеть, я понятия не имею, где tf.print будет делать то, что я хочу, т.е. я хочу видеть значения тензоры. Если что-то является тензорным, оно должно иметь значение. Аналогично для переменных.

Итак, когда tf.print фактически напечатает значения тензоров?

Я ищу ответы, которые говорят, например, «tf.print НИКОГДА не сработает» или «Это сработает, только если вы мечтаете». Помимо шуток и сарказма, я действительно ищу ответы, которые точно скажут мне, в каких местах моего кода или на каких этапах разработки модели с TF tf.print будет действительно то, что она должна делать. Пожалуйста, не говорите мне, что tf.print будет работать, когда вход является тензором !!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...