redes - Obtenga el valor de algunos pesos en un modelo entrenado por TensorFlow
tensorflow python (2)
En TensorFlow, los pesos entrenados están representados por
tf.Variable
. Objetos
tf.Variable
.
Si creó un
tf.Variable
llamado v— usted mismo, puede obtener su valor como una matriz NumPy llamando a
sess.run(v)
(donde
sess
es una
tf.Session
).
Si actualmente no tiene un puntero a
tf.Variable
, puede obtener una lista de las variables entrenables en el gráfico actual llamando a
tf.trainable_variables()
.
Esta función devuelve una lista de todos los objetos entrenables
tf.Variable
en el gráfico actual, y puede seleccionar el que desee haciendo coincidir la propiedad
v.name
.
Por ejemplo:
# Desired variable is called "tower_2/filter:0".
var = [v for v in tf.trainable_variables() if v.name == "tower_2/filter:0"][0]
He entrenado un modelo ConvNet con TensorFlow, y quiero obtener un peso particular en la capa.
Por ejemplo, en torch7 simplemente
model.modules[2].weights
a
model.modules[2].weights
.
para obtener los pesos de la capa 2. ¿Cómo haría lo mismo en TensorFlow?
Entonces, si continúa con este código paso a paso, primero obtendrá una lista de variables usadas / entrenables. Luego, podría ordenarlos en una lista donde clasifique matrices / listas de ponderación por nombres de variables, por ejemplo, cómo fue posible manejar esa información.
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....