Caricamento modello formato con Keras per classificare Mnist

Tutorial di apprendimento profondo con Keras per caricare un modello formato con il database MNIST.

Il codice completo di questo post è disponibile nel libro Jupyter

Introduzione

Nel tutorial precedente abbiamo addestrato una rete neuronale con Keras per classificare il database mnist.
Questo tutorial impareremo come caricare un modello ed eseguire classificazioni senza dover eseguire l’intero processo di formazione.

Importa di librerie

Scarica il database mnist

Sebbene il modello sia già formato, non memorizza il set di dati di prova o la formazione, quindi, è necessario scaricare loro di nuovo.

# Para descargar la base de datos MNISTimport tensorflow as tfold_v = tf.logging.get_verbosity()tf.logging.set_verbosity(tf.logging.ERROR)from tensorflow.examples.tutorials.mnist import input_datamnist = input_data.read_data_sets("data/MNIST/", one_hot=True)

Estrazione dei dati / Mnist / treno -Immagine-IDX3-UBYTE.GZextrazione Dati / Mnist / Train-la BELS-IDX1-UBYTE.GZextaction DATA / MNIST / T10K-IMMAGINI-IDX3-UBYTE.GZextracting Data / MNNT / T10K-Etichette-IDX1-UBYTE.GZ

Salva i dati MNNT in diverse variabili

# Guardar las imagenes y etiquetas de entrenoimages_train = mnist.train.imageslabels_train = mnist.train.labels# Guardar las imagenes y etiquetas de testimages_test = mnist.test.imageslabels_test = mnist.test.labelsimg_shape = (28, 28)

import di modello formato

il modello formato nel tutorial precedente ha lui è stato nominato model.keras. È necessario includere il percorso completo al modello da caricare correttamente.
Il modello contiene la struttura della rete neuronale, il set di matrici di peso addestrato. Quindi il percorso è incluso nel modello e caricato.

Se non hai addestrato la rete neuronale del tutorial precedente e salvato il modello che non è possibile caricarlo in questo tutorial.

Visualizzazione della struttura del modello

Una volta caricato il modello, lo è Non è necessario definire tutta la struttura del livello è già pronto per eseguire classificazioni.
Il riepilogo del modello è mostrato di seguito:

new_model.summary()

Pronostico con il modello caricato

y_pred2 = new_model.predict(x=images_test)# Obtencion de las etiquetas predichascls_pred2 = np.argmax(y_pred2,axis=1)

Controllo di precisione del modello manualmente

# Obtencion de las etiquetas verdaderastrue_labels2 = np.argmax(labels_test,axis=1)# Obtencion vector booleano para ver que posiciones coincidenpossitions = cls_pred2 == true_labels2# Numero de prediciones correctas dividido entre todas las predicionesprecision = sum(possitions)/len(true_labels2)print("Precision : {0}%".format(precision))

precisione: 0,9771%

funzione ausiliaria Per tracciare immagini

La seguente funzione viene utilizzata per tracciare 9 esempi del database MNIST e indicare quale viene trattato un numero. Nel caso in cui ciò che hai previsto la rete traccia le immagini previste correttamente con una cornice verde e le cattive prediche con un rettangolo rosso.

def plot_imagenes(imagenes, verdaderas, predichas=None): # Seleccionar 9 indices aleatorios para elegir las imagenes ind = sample(range(len(imagenes)),9) # Tomar las imagenes img = imagenes color = 'green' # Tomar las etiquetas verdaderas y predichas si las hay if predichas is None: etiq = verdaderas else: etiq = verdaderas pred = predichas # Crear la figura con 3x3 sub-plots fig, axes = plt.subplots(3, 3) fig.subplots_adjust(hspace=0.3, wspace=0.3) for i, ax in enumerate(axes.flat): # Plotear imagen. ax.imshow(img.reshape(img_shape), cmap='binary') # Mostrar los numeros verdaderos y predichos if predichas is None: xlabel = "Numero: {0}".format(etiq) else: xlabel = "Numero: {0}, Predicho: {1}".format(etiq, pred) if etiq != pred: color = 'red' ax.spines.set_color(color) ax.spines.set_color(color) ax.spines.set_color(color) ax.spines.set_color(color) color = 'green' # Mostrar los numeros en el eje x ax.set_xlabel(xlabel) # Borrar los ticks del plot ax.set_xticks() ax.set_yticks() plt.show()

Mostra alcuni esempi previsti

plot_imagenes(imagenes=images_test, verdaderas=true_labels2, predichas=cls_pred2)

PNG

di Pedro Fernando Dintorni Perez / GitHub

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *