Estoy creando redes neuronales con Tensorflow
y skflow
; por alguna razón, quiero obtener los valores de algunos tensores internos para una entrada determinada, por lo que estoy usando myClassifier.get_layer_value(input, "tensorName")
, myClassifier
siendo a skflow.estimators.TensorFlowEstimator
.
Sin embargo, me resulta difícil encontrar la sintaxis correcta del nombre del tensor, incluso sabiendo su nombre (y me estoy confundiendo entre operación y tensores), así que estoy usando tensorboard para trazar el gráfico y buscar el nombre.
¿Hay alguna forma de enumerar todos los tensores en un gráfico sin usar tensorboard?
fuente
if "Variable" in n.op
al final de la comprensión.Hay una manera de hacerlo un poco más rápido que en la respuesta de Yaroslav usando get_operations . Aquí hay un ejemplo rápido:
fuente
tf.get_operations()
. Única operación que puedes conseguir.Intentaré resumir las respuestas:
Para obtener todos los nodos (tipo
tensorflow.core.framework.node_def_pb2.NodeDef
):Para obtener todas las operaciones (tipo
tensorflow.python.framework.ops.Operation
):Para obtener todas las variables (tipo
tensorflow.python.ops.resource_variable_ops.ResourceVariable
):Para obtener todos los tensores (tipo
tensorflow.python.framework.ops.Tensor
) :fuente
tf.all_variables()
puede conseguirle la información que desee.Además, esta confirmación realizada hoy en TensorFlow Learn que proporciona una función
get_variable_names
en el estimador que puede usar para recuperar todos los nombres de variables fácilmente.fuente
tf.global_variables()
all_variables (from tensorflow.python.ops.variables) is deprecated and will be removed after 2017-03-02
Creo que esto también servirá:
Pero comparado con las respuestas de Salvado y Yaroslav, no sé cuál es mejor.
fuente
La respuesta aceptada solo le brinda una lista de cadenas con los nombres. Prefiero un enfoque diferente, que le da (casi) acceso directo a los tensores:
list_of_tuples
ahora contiene cada tensor, cada uno dentro de una tupla. También puedes adaptarlo para obtener los tensores directamente:fuente
Dado que el OP solicitó la lista de tensores en lugar de la lista de operaciones / nodos, el código debería ser ligeramente diferente:
fuente
Las respuestas anteriores son buenas, solo me gustaría compartir una función de utilidad que escribí para seleccionar Tensores de un gráfico:
Entonces, si tiene un gráfico con operaciones:
Entonces corriendo
devoluciones:
fuente
Esto funcionó para mí:
fuente