Deep learning: come salvare una rete neurale con Keras

Cattura

Quando hai allenato una rete che funziona avrai bisogno di un metodo per salvarla e utilizzarla all’occorrenza. Con keras questa operazione diventa semplice, questione di poche righe di codice. Prima di passare ai fatti parliamo un po di cosa può significare salvare un modello e dei formati di salvataggio più utilizzati.

Il salvataggio di una rete si può dividere in due componenti principali: i pesi calcolati e la struttura del modello. Nella maggior parte dei casi la scelta migliore è quella di salvare in un’unica operazione struttura, pesi e altri dati associati in un’unica operazione per semplificare le operazioni di restore.

Il salvataggio dei pesi di una rete o di un’intera struttura avviene in un file HDF5, un sistema di storage efficiente e flessibile che supporta dataset multidimensionali complessi. Quando invece basta rendere persistente soltanto la struttura del modello basta un semplice file json. Per gestire i file HDF5 in python ti consiglio di installare il modulo open h5py mentre la lettura dei file json è agevole da qualsiasi editor di testi (VIM e il massimo ma se preferisci le GUI Visual Studio Code è un’ottima soluzione).

Il codice per salvare la struttura di un modello Keras è il seguente:

Per recuperare il modello invece basta questo:

 

Se occorre invece salvare l’intero modello lo sforzo, quantificato in linee di codice, è anche minore:

 

Infine è possibile salvare soltanto i pesi relativi ad un modello. Questo può essere utile quando alla stessa struttura (magari già persistente grazie ad un file json) associamo pesi diversi per utilizzi diversi.

 

Con keras salvare una rete neurale è semplice, questo significa che dopo ore di training e test avrai un sistema di Deep Learning pronto all’uso. Un passo verso l’applicazione pratica della teoria al servizio della soluzione di problemi reali.