J'ai formé un modèle ConvNet avec TensorFlow et je souhaite obtenir un poids particulier dans la couche. Par exemple, dans torch7, je voudrais simplement accéder à model.modules[2].weights
. pour obtenir les poids de la couche 2. Comment ferais-je la même chose dans TensorFlow?
Dans TensorFlow, les poids formés sont représentés par tf.Variable
objets. Si vous avez créé un _tf.Variable
_— par ex. appelé v
— vous-même, vous pouvez obtenir sa valeur sous forme de tableau NumPy en appelant sess.run(v)
(où sess
est un tf.Session
) .
Si vous ne disposez pas actuellement de pointeur sur le _tf.Variable
_, vous pouvez obtenir une liste des variables pouvant être entraînées dans le graphique en cours en appelant tf.trainable_variables()
. Cette fonction renvoie la liste de tous les objets __ entraînables _tf.Variable
_ du graphe en cours. Vous pouvez sélectionner celui que vous souhaitez en faisant correspondre la propriété _v.name
_. Par exemple:
_# Desired variable is called "tower_2/filter:0".
var = [v for v in tf.trainable_variables() if v.name == "tower_2/filter:0"][0]
_
Donc, si vous procédez pas à pas, vous obtiendrez d’abord une liste de variables utilisées/pouvant être entraînées. Ensuite, vous pouvez les trier dans une liste dans laquelle vous triez les matrices/listes de pondération en noms de variables, par exemple, comment vous avez été en mesure de traiter ces informations.
vars = tf.trainable_variables()
print(vars) #some infos about variables...
vars_vals = sess.run(vars)
for var, val in Zip(vars, vars_vals):
print("var: {}, value: {}".format(var.name, val)) #...or sort it in a list....