J'essaie de comprendre du code à partir d'un algorithme d'apprentissage par renforcement. Pour ce faire, j'essaie d'imprimer la valeur d'un tenseur.
J'ai fait un simple morceau de code pour montrer ce que je veux dire.
import tensorflow as tf
from keras import backend as K
x = K.abs(-2.0)
tf.Print(x,[x], 'x')
Le but est d'avoir la valeur '2' imprimée (la valeur absolue de -2). Mais je ne récupère que ce qui suit:
Using TensorFlow backend.
Process finished with exit code 0
Rien, comment imprimer la valeur '2' comme le ferait une instruction print ('...')?
Si vous utilisez Jupyter Notebook, alors tf.Print()
n'est pas compatible jusqu'à présent et imprimerait la sortie sur la sortie du serveur Notebook comme décrit dans docs
Dans la documentation tensorflow, voici comment les tenseurs sont décrits:
Lors de l'écriture d'un programme TensorFlow, l'objet principal que vous manipulez et transmettez est le tf.Tensor. Un objet tf.Tensor représente un calcul partiellement défini qui produira éventuellement une valeur.
Par conséquent, vous devrez les initialiser avec une tf.Session()
pour obtenir leur valeur. Pour imprimer la valeur, vous eval()
Voici le code que vous souhaitez:
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())
L'initialiseur est important pour réellement initialiser x.
À des fins d'apprentissage, il est parfois pratique d'activer l'exécution désirée. Une fois l'exécution désirée activée, TensorFlow exécutera immédiatement les opérations. Vous pouvez ensuite simplement utiliser print ou tensorflow.print () pour imprimer la valeur de votre objet.
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')
voir ici pour plus de détails. https://www.tensorflow.org/api_docs/python/tf/compat/v1/enable_eager_execution
Pour imprimer un tenseur dans TF 2.0 et supérieur
my_sample = tf.constant([[3,5,2,6], [2,8,3,1], [7,2,8,3]])
Avec session.run ()with tf.compat.v1.Session() as ses: print(ses.run(my_sample))
Une ligne avec eval ()print(tf.keras.backend.eval(my_sample))