Comment renommer une variable qui respecte l'étendue du nom?
Donné x, y
sont les tenseurs, je sais que je peux faire
with tf.name_scope("abc"):
z = tf.add(x, y, name="z")
De sorte que z
est nommé "abc/z"
.
Je me demande si il existe une fonction f
qui attribuer le nom directement dans le cas suivant:
with tf.name_scope("abc"):
z = x + y
f(z, name="z")
La stupide f
j'utilise maintenant est z = tf.add(0, z, name="z")
OriginalL'auteur colinfang | 2015-12-21
Vous devez vous connecter pour publier un commentaire.
Si vous souhaitez renommer " une op, il n'y a aucun moyen de le faire directement, car un
tf.Operation
(outf.Tensor
) est immuable une fois qu'il a été créé. Typique de la façon de renommer un op est donc d'utilisertf.identity()
, qui n'a presque pas d'exécution coût:Noter cependant que la méthode recommandée pour la structure de votre nom de champ est d'attribuer le nom de l'étendue elle-même à la "sortie" de la portée (si il y a une seule sortie op):
C'est la façon dont le TensorFlow bibliothèques sont structurés, et il a tendance à donner le meilleur de visualisation dans TensorBoard.
Pas une citation exactement: je travaille sur la TensorFlow équipe, donc je l'ai aidé à faire la recommandation.
OriginalL'auteur mrry
Il semble qu'il fonctionne aussi sans
tf.name_scope
seulement avecz = tf.identity(z, name="z_name")
. Si vous exécutez en outrez = tf.identity(z, name="z_name_new")
ensuite, vous pouvez accéder à la même tenseur à l'aide de deux noms:tf.get_default_graph().get_tensor_by_name("z_name:0")
outf.get_default_graph().get_tensor_by_name("z_name_new:0")
OriginalL'auteur Sergiu I