Non, vous ne pouvez pas voir le contenu du tenseur sans lancer le graphe (faire session.run()
). Les seules choses que vous pouvez voir sont:
- la dimensionnalité du tenseur (mais je suppose qu'il n'est pas difficile de le calculer pour la liste des opérations que TF a)
- type d'opération qui sera utilisé pour générer le tenseur (
transpose_1:0
, random_uniform:0
)
- type d'éléments dans le tenseur (
float32
)
Je n'ai pas trouvé cela dans la documentation, mais je pense que les valeurs des variables (et certaines des constantes ne sont pas calculées au moment de l'affectation).
Jetez un œil à cet exemple:
import tensorflow as tf
from datetime import datetime
dim = 7000
Le premier exemple où je viens d'initier un tenseur constant de nombres aléatoires s'exécute approximativement en même temps indépendamment de dim ( 0:00:00.003261
)
startTime = datetime.now()
m1 = tf.truncated_normal([dim, dim], mean=0.0, stddev=0.02, dtype=tf.float32, seed=1)
print datetime.now() - startTime
Dans le deuxième cas, où la constante est effectivement évaluée et les valeurs sont attribuées, le temps dépend clairement de dim ( 0:00:01.244642
)
startTime = datetime.now()
m1 = tf.truncated_normal([dim, dim], mean=0.0, stddev=0.02, dtype=tf.float32, seed=1)
sess = tf.Session()
sess.run(m1)
print datetime.now() - startTime
Et vous pouvez le rendre plus clair en calculant quelque chose ( d = tf.matrix_determinant(m1)
en gardant à l'esprit que le temps va s'écouler O(dim^2.8)
)
PS j'ai trouvé où il est expliqué dans la documentation :
Un objet Tenseur est une poignée symbolique du résultat d'une opération, mais ne contient pas réellement les valeurs de la sortie de l'opération.