example tensorflow

example - función tf.rank en Tensorflow



tensorflow reshape example (1)

Estoy tratando de entender la función tf.rank en tensorflow. De la documentación aquí , entendí que el rango debería devolver la cantidad de elementos distintos en el tensor.

Aquí xy los pesos son 2 tensores distintos de 2 * 2 con 4 elementos distintos en cada uno de ellos. Sin embargo, los resultados de la función rank () son:

Tensor ("Rango: 0", forma = (), dtype = int32) Tensor ("Rango_1: 0", forma = (), dtype = int32)

Además, para el tensor x, utilicé tf.constant () con dtype = float para convertir ndarray en float32 tensor, pero el rango () sigue como int32.

g = tf.Graph() with g.as_default(): weights = tf.Variable(tf.truncated_normal([2,2])) x = np.asarray([[1 , 2], [3 , 4]]) x = tf.constant(x, dtype = tf.float32) y = tf.matmul(weights, x) print (tf.rank(x), tf.rank(weights)) with tf.Session(graph = g) as s: tf.initialize_all_variables().run() print (s.run(weights), s.run(x)) print (s.run(y))

¿Cómo debo interpretar el resultado?


En primer lugar, tf.rank devuelve la dimensión de un tensor, no la cantidad de elementos. Por ejemplo, la salida de tf.rank llamada para la matriz 2x2 sería 2.

Para imprimir el rango de un tensor, crea un nodo apropiado, por ejemplo, rank = tf.rank(x) y luego evalúa este nodo usando un Session.run() , como has hecho para weights y x. La ejecución de print (tf.rank(x), tf.rank(weights)) imprime de forma esperada la descripción de los tensores, ya que tf.rank(x), tf.rank(weights) son nodos del gráfico, no las variables con definición valores.