python - usarlo - tensorflow ejemplo español
Lista de nombres de tensor en gráfico en Tensorflow (5)
Como una lista de comprensión anidada:
tensor_names = [t.name for op in tf.get_default_graph().get_operations() for t in op.values()]
Función para obtener nombres de tensores en un gráfico (el valor predeterminado es el gráfico predeterminado):
def get_names(graph=tf.get_default_graph()):
return [t.name for op in graph.get_operations() for t in op.values()]
Función para obtener tensores en un gráfico (el valor predeterminado es el gráfico predeterminado):
def get_tensors(graph=tf.get_default_graph()):
return [t for op in graph.get_operations() for t in op.values()]
El objeto gráfico en Tensorflow tiene un método llamado "get_tensor_by_name (name)". ¿Hay alguna forma de obtener una lista de nombres de tensor válidos?
Si no, ¿alguien sabe los nombres válidos para el modelo pre-entrenado inception-v3 desde aquí ? A partir de su ejemplo, pool_3, es un tensor válido, pero una lista de todos estaría bien. Miré el papel mencionado y algunas de las capas parecen corresponder a los tamaños en la tabla 1, pero no todas.
El documento no refleja con precisión el modelo. Si descarga la fuente de arxiv, tiene una descripción precisa del modelo como model.txt, y los nombres allí se correlacionan fuertemente con los nombres del modelo publicado.
Para responder a su primera pregunta,
sess.graph.get_operations()
le brinda una lista de operaciones.
Para una
op.name
,
op.name
le da el nombre y
op.values()
le da una lista de tensores que produce (en el modelo inception-v3, todos los nombres de tensor son el nombre de operación con un ": 0" adjunto, entonces
pool_3:0
es el tensor producido por la
pool_3:0
agrupación final.)
Las respuestas anteriores son correctas. Encontré un código simple / fácil de entender para la tarea anterior. Así que compartiéndolo aquí: -
import tensorflow as tf
def printTensors(pb_file):
# read pb into graph_def
with tf.gfile.GFile(pb_file, "rb") as f:
graph_def = tf.GraphDef()
graph_def.ParseFromString(f.read())
# import graph_def
with tf.Graph().as_default() as graph:
tf.import_graph_def(graph_def)
# print operations
for op in graph.get_operations():
print(op.name)
printTensors("path-to-my-pbfile.pb")
Ni siquiera tiene que crear una sesión para ver los nombres de todos los nombres de operaciones en el gráfico.
Para hacer esto, solo necesita tomar un gráfico predeterminado
tf.get_default_graph()
y extraer todas las operaciones:
.get_operations
.
Cada operación tiene
muchos campos
, el que necesita es el nombre.
Aquí está el código:
import tensorflow as tf
a = tf.Variable(5)
b = tf.Variable(6)
c = tf.Variable(7)
d = (a + b) * c
for i in tf.get_default_graph().get_operations():
print i.name
Para ver las operaciones en el gráfico (verá muchas, así que para abreviar, he dado aquí solo la primera cadena).
sess = tf.Session()
op = sess.graph.get_operations()
[m.values() for m in op][1]
out:
(<tf.Tensor ''conv1/weights:0'' shape=(4, 4, 3, 32) dtype=float32_ref>,)