Não, você não pode ver o conteúdo do tensor sem executar o gráfico (fazer session.run()
). As únicas coisas que você pode ver são:
- a dimensionalidade do tensor (mas presumo que não seja difícil calculá-lo para a lista de operações que o TF possui)
- tipo de operação que será usada para gerar o tensor (
transpose_1:0
, random_uniform:0
)
- tipo de elementos no tensor (
float32
)
Não encontrei isso na documentação, mas acredito que os valores das variáveis (e algumas das constantes não são calculadas no momento da atribuição).
Veja este exemplo:
import tensorflow as tf
from datetime import datetime
dim = 7000
O primeiro exemplo em que eu apenas inicio um tensor constante de números aleatórios é executado aproximadamente ao mesmo tempo, independentemente 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
No segundo caso, onde a constante é realmente avaliada e os valores atribuídos, o tempo depende claramente 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
E você pode deixar isso mais claro ao calcular algo ( d = tf.matrix_determinant(m1)
tendo em mente que o tempo se esgotará O(dim^2.8)
)
PS eu encontrei onde é explicado na documentação :
Um objeto Tensor é um identificador simbólico para o resultado de uma operação, mas na verdade não mantém os valores da saída da operação.