with tutorial started neural network machine learning guide getting example python tensorflow machine-learning deep-learning tensor

python - started - tensorflow tutorial pdf



¿Cómo entender el término `tensor` en TensorFlow? (4)

Como ya lo mencionaron otros, sí, todos son tensores.

La forma en que los comprendí es primero visualizar y comprender los tensores 1D, 2D, 3D, 4D, 5D y 6D como se muestra en la siguiente imagen. (fuente: knoldus )

Ahora, en el contexto de TensorFlow, puedes imaginar un gráfico de computación como el siguiente,

Aquí, los Op toman dos tensores b como entrada ; multiplica los tensores consigo mismo y luego agrega el resultado de estas multiplicaciones para producir el tensor de resultado t3 . Y estas multiplicaciones y Op adición ocurren en los nodos en el gráfico de computación.

Y estos tensores b pueden ser tensores constantes, tensores variables o marcadores de posición. No importa, siempre y cuando sean del mismo tipo de datos y formas compatibles (o broadcast ) para lograr las operaciones.

Soy nuevo en TensorFlow. Mientras leo la documentación existente, el término tensor me pareció realmente confuso. Por eso, necesito aclarar las siguientes preguntas:

  1. Cuál es la relación entre el tensor y la Variable , tensor
    vs. tf.constant , ''tensor'' vs. tf.placeholder ?
  2. ¿Son todos tipos de tensores?

Del glossary :

Un Tensor es una matriz multidimensional tipada. Por ejemplo, una matriz 4-D de números de coma flotante que representa un mini lote de imágenes con dimensiones [lote, altura, ancho, canal].

Básicamente, cada dato es un Tensor en TensorFlow (de ahí el nombre):

  • los marcadores de posición son tensores a los que puede alimentar un valor (con el argumento sess.run() en sess.run() )
  • Las variables son Tensors que puede actualizar (con var.assign() ). Técnicamente hablando, tf.Variable no es una subclase de tf.Tensor aunque
  • tf.constant es simplemente el Tensor más básico, que contiene un valor fijo dado cuando lo creas

Sin embargo, en el gráfico, cada nodo es una operación, que puede tener tensores como entradas o salidas.


El tipo de datos central de TensorFlow es el tensor. Los tensores son los componentes subyacentes de la computación y una estructura de datos fundamental en TensorFlow. Sin utilizar interpretaciones matemáticas complejas, podemos decir que un tensor (en TensorFlow) describe una matriz numérica multidimensional, con una colección de datos n o dimensional, determinada por rango, forma y tipo.Leer más: ¿Qué son los tensores en TensorFlow?


TensorFlow no tiene objetos Tensor de primera clase, lo que significa que no hay ninguna noción de Tensor en el gráfico subyacente que ejecuta el tiempo de ejecución. En cambio, el gráfico consiste en nodos op conectados entre sí, representando operaciones. Una operación asigna memoria para sus salidas, que están disponibles en puntos finales :0 ,: :1 , etc., y puede pensar en cada uno de estos puntos finales como un Tensor . Si tiene un tensor correspondiente a nombre de nodename:0 puede obtener su valor como sess.run(tensor) o sess.run(''nodename:0'') . La granularidad de la ejecución ocurre en el nivel de operación, por lo que el método de ejecución ejecutará op que calculará todos los puntos finales, no solo el punto final :0 . Es posible tener un nodo Op sin salidas (como tf.group ) en cuyo caso no hay tensores asociados con él. No es posible tener tensores sin un nodo Op subyacente.

Puede examinar lo que sucede en el gráfico subyacente haciendo algo como esto

tf.reset_default_graph() value = tf.constant(1) print(tf.get_default_graph().as_graph_def())

Entonces con tf.constant obtienes un único nodo de operación, y puedes buscarlo usando sess.run("Const:0") o sess.run(value)

De forma similar, value=tf.placeholder(tf.int32) crea un nodo regular con el nombre Placeholder , y puede alimentarlo como feed_dict={"Placeholder:0":2} o feed_dict={value:2} . No puede alimentar y obtener un marcador de posición en la misma llamada session.run , pero puede ver el resultado adjuntando un nodo tf.identity en la parte superior y obteniéndolo.

Para variable

tf.reset_default_graph() value = tf.Variable(tf.ones_initializer()(())) value2 = value+3 print(tf.get_default_graph().as_graph_def())

Verá que crea dos nodos Variable y Variable/read , el punto final :0 es un valor válido para obtener en ambos nodos. Sin embargo, Variable:0 tiene un tipo de ref especial, lo que significa que puede usarse como entrada para operaciones de mutación. El resultado de la llamada de Python tf.Variable es un objeto de la Variable Python y hay algo de magia de Python para sustituir Variable/read:0 o Variable:0 dependiendo de si la mutación es necesaria. Como la mayoría de las operaciones tienen solo 1 punto final,: :0 se descarta. Otro ejemplo es el método Queue - close() que creará un nuevo nodo Close op que se conecta a la función Queue op. Para resumir: operaciones en objetos de Python como el mapa de Variable y Queue para diferentes nodos TensorFlow op subyacentes según el uso.

Para operaciones como tf.split o tf.nn.top_k que crean nodos con múltiples puntos finales, la llamada tf.nn.top_k Python automáticamente envuelve la salida en tuple o collections.namedtuple de los objetos Tensor que se pueden buscar individualmente.