Cómo guardar un modelo de red neuronal de convolución después del entrenamiento

La forma general de guardar un modelo de aprendizaje profundo es guardar sus pesos, y puede hacerlo guardando los pesos en un formato preferible, y cuando desea usar el modelo, carga los pesos y construye un modelo similar al entrenado y restablecer los valores de los pesos a los pesos del modelo entrenado cargado.

Por supuesto, esta es una forma muy general, espero que lo haya entendido, puede encontrar que bibliotecas más sofisticadas es mucho más fácil.

En Keras , biblioteca de aprendizaje profundo para Theano y TensorFlow , puede usar:

from keras.models import load_model model.save (‘my_model.h5’) # crea un archivo HDF5 ‘my_model.h5’

del modelo # elimina el modelo existente

# devuelve un modelo compilado
# idéntico al anterior
model = load_model (‘my_model.h5’)

Usando TensorFlow puedes usar:

guardar modelo:

w1 = tf.Variable (tf.truncated_normal (shape = [10]), name = ‘w1’)
w2 = tf.Variable (tf.truncated_normal (shape = [20]), name = ‘w2’)
tf.add_to_collection (‘vars’, w1)
tf.add_to_collection (‘vars’, w2)
ahorrador = tf.train.Saver ()
sess = tf.Session ()
sess.run (tf.global_variables_initializer ())
saver.save (sess, ‘mi-modelo’)
El método # `save` llamará implícitamente a` export_meta_graph`.
# obtendrá archivos de gráficos guardados: my-model.meta

restaurar modelo:

sess = tf.Session ()
new_saver = tf.train.import_meta_graph (‘my-model.meta’)
new_saver.restore (sess, tf.train.latest_checkpoint (‘./’))
all_vars = tf.get_collection (‘vars’)
para v en all_vars:
v_ = sess.run (v)
imprimir (v_)

En Lasange – biblioteca de peso ligero construida sobre Theano – puede usar:

guardar modelo:

importar numpy como np
lasaña de importación
# volcar los pesos de la red a un archivo:
np.savez (‘model.npz’, * lasagne.layers.get_all_param_values ​​(red))

modelo de carga:

# cargar pesos de red del archivo de modelo
con np.load (modelo) como f:
param_values ​​= [f [‘arr_% d’% i] para i en rango (len (f.files))]
lasagne.layers.set_all_param_values ​​(network, param_values)

también puedes usar Pickling con los módulos pickle o cPickle ya que encontrará más en este sitio Cargando y Guardando o 12.1. pickle – Serialización de objetos de Python – Documentación de Python 3.6.1rc1.

referencias:

  1. Preguntas frecuentes: documentación de Keras.
  2. Tensorflow.
  3. 12.1 pickle – Serialización de objetos de Python – Documentación de Python 3.6.1rc1.
  4. Lasaña

Si usamos Keras, la opción de guardar es bastante simple para cualquier modelo. Aquí hay un fragmento de muestra de un modelo: solo una línea de código para guardar al final después del entrenamiento

Solo asegúrate de tener HDF5 para Python

Así que primero importa h5py.

Código de muestra de guardar un modelo después del entrenamiento.

Para cargar el modelo guardado,

de keras.models import load_model

model = load_model (model_name)

print (model.summary ())

Gracias por el A2A Rajesh.

La respuesta de Merghaney Mohammed lo explica bastante bien. No puedo agregar mucho más a eso.