tutorial - tensorflow python español
¿Cómo nombra TensorFlow los tensores? (1)
Me pregunto si esta es la comprensión correcta:
Todos los tensores se derivan de alguna operación, y las operaciones reciben un nombre en el constructor o el nombre predeterminado para un tipo particular de operación.
Si el nombre no es único, TensorFlow lo maneja automáticamente agregando
"_1"
,
"_2"
, etc. Una operación con n salidas de tensor nombra estos tensores
"op_name:0"
,
"op_name:1"
, ...,
"op_name:n-1"
.
Parece surgir un problema: si
x
es un
tf.Variable
, entonces
x.name
da
"variable_name:0"
.
Esto es confuso: ¿a qué se refiere
"variable_name"
?
Sus observaciones sobre el nombre de
Tensor
son absolutamente correctas: el nombre de un
Tensor
es la concatenación de
- el nombre de la operación que lo produjo,
- dos puntos (:) y
- El índice de ese tensor en las salidas de la operación que lo produjo.
Por lo tanto, el tensor llamado
"foo:2"
es la salida de la operación llamada
"foo"
en la posición 2 (con índices que comienzan desde cero).
El
naming
de
tf.Variable
Objetos
tf.Variable
es un poco extraño.
Cada
tf.Variable
contiene un objeto
tensor mutable
que contiene el estado de la variable (y algunos otros tensores).
Una
"Variable"
(que tiene el nombre
"variable_name"
en su ejemplo) "produce" este tensor mutable cada vez que se ejecuta como su salida 0, por lo que el nombre del tensor mutable es
"variable_name:0"
.
Como un
tf.Variable
se puede distinguir en su mayoría de un
tf.Tensor
que puede usarse en los mismos lugares, tomamos la decisión de hacer que los nombres de las variables se parezcan a los del tensor, por lo que la propiedad
Variable.name
devuelve el nombre del tensor mutable .
(Esto contrasta con los objetos
tf.QueueBase
y
tf.ReaderBase
, que
no
se
pueden
usar directamente como tensores (en su lugar, debe llamar a métodos para crear operaciones que operen en su estado), por lo que estos no tienen un nombre similar a un tensor. )