Как напечатать значение Tensor, Keras/Tensorflow

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

Я сделал простой кусок кода, чтобы показать, что я имею в виду.

import tensorflow as tf
from keras import backend as K

x = K.abs(-2.0)
tf.Print(x,[x], 'x')

Цель состоит в том, чтобы напечатать значение "2" (абсолютное значение -2). Но я получаю только следующее:

Using TensorFlow backend.

Process finished with exit code 0

Ничего, как я могу вывести значение '2' так же, как это сделал бы оператор print('...')?

1 ответ

Решение

Если вы используете ноутбук Jupyter, то tf.Print() пока что несовместимо и будет выводить вывод на серверный ноутбук, как описано в документации

В документации по тензорному потоку вот как описываются тензоры:

При написании программы TensorFlow основным объектом, которым вы манипулируете и обмениваетесь, является tf.Tensor. Объект tf.Tensor представляет собой частично определенное вычисление, которое в конечном итоге даст значение.

Следовательно, вам придется инициализировать их с tf.Session() чтобы получить их ценность. Чтобы напечатать значение, вы eval()

Вот код, который вы хотите:

import tensorflow as tf
from keras import backend as K

x= K.abs(-2.0)
with tf.Session() as sess:
    init = tf.global_variables_initializer()
    sess.run(init)
    print(x.eval())

Инициализатор важен для фактической инициализации x.

Чтобы напечатать тензор в TF 2.0 и выше

my_sample = tf.constant([[3,5,2,6], [2,8,3,1], [7,2,8,3]])
  1. С session.run()
    with tf.compat.v1.Session() as ses: print(ses.run(my_sample))

  2. Одна строка с eval()
    print(tf.keras.backend.eval(my_sample))

Для обучения иногда бывает удобно включить активное выполнение. Если активировано активное выполнение, TensorFlow будет выполнять операции немедленно. Затем вы можете просто использовать print или tensorflow.print(), чтобы распечатать значение вашего объекта.

import tensorflow as tf
from keras import backend as K

tf.compat.v1.enable_eager_execution() # enable eager execution

x = K.abs(-2.0)
tf.Print(x,[x], 'x')

подробнее см. здесь. https://www.tensorflow.org/api_docs/python/tf/compat/v1/enable_eager_execution

Другие вопросы по тегам