python - perro - Obtener pesos del modelo tensorflow
tensorflow python (1)
Este modelo VGG-16 tf.constant()
codifica todos los parámetros del modelo como tf.constant()
ops. (Consulte, por ejemplo, las llamadas a tf.constant()
aquí .) Como resultado, los parámetros del modelo no aparecerían en tf.trainable_variables()
, y el modelo no se puede modificar sin una cirugía importante: tendría que reemplazar el nodos constantes con tf.Variable
objetos que comienzan con el mismo valor para continuar el entrenamiento.
En general, cuando se importa un gráfico para reentrenamiento, se debe utilizar la función tf.train.import_meta_graph()
, ya que esta función carga metadatos adicionales (incluidas las colecciones de variables). La función tf.import_graph_def()
es de nivel inferior y no rellena estas colecciones.
Hola, me gustaría ajustar el modelo VGG de tensorflow. Tengo dos preguntas.
¿Cómo obtener los pesos de la red? The trainable_variables devuelve lista vacía para mí.
Utilicé el modelo existente desde aquí: https://github.com/ry/tensorflow-vgg16 . Encuentro la publicación sobre cómo obtener pesos, sin embargo, esto no funciona para mí debido a import_graph_def. Obtenga el valor de algunos pesos en un modelo entrenado por TensorFlow
import tensorflow as tf
import PIL.Image
import numpy as np
with open("../vgg16.tfmodel", mode=''rb'') as f:
fileContent = f.read()
graph_def = tf.GraphDef()
graph_def.ParseFromString(fileContent)
images = tf.placeholder("float", [None, 224, 224, 3])
tf.import_graph_def(graph_def, input_map={ "images": images })
print("graph loaded from disk")
graph = tf.get_default_graph()
cat = np.asarray(PIL.Image.open(''../cat224.jpg''))
print(cat.shape)
init = tf.initialize_all_variables()
with tf.Session(graph=graph) as sess:
print(tf.trainable_variables() )
sess.run(init)