Una guida rapida per creare una rappresentazione schematica delle tue reti neurali utilizzando Jupyter o Google Colab
Spesso, mentre lavoriamo con le reti neurali artificiali o altre varianti come le reti neurali a convoluzione o le reti neurali ricorrenti, desideriamo visualizzare e creare una rappresentazione schematica del nostro modello compilato. Questo può risolvere due scopi:
- Mentre definire e addestrare più modelli ci consente di visualizzare la profondità del nostro modello e confrontare diversi livelli e il modo in cui sono disposti in sequenza.
- Consente una migliore comprensione della struttura del modello, delle funzioni di attivazione utilizzate in ogni strato, della forma di ogni strato (numero di neuroni) e dei parametri che devono essere addestrati
Ci sono alcuni pacchetti prontamente disponibili in Python che possono creare una rappresentazione visiva dei nostri modelli di rete neurale. I primi tre pacchetti possono essere utilizzati anche prima che un modello venga addestrato (il modello deve solo essere definito e compilato); tuttavia, Tensor Boards richiede all'utente di addestrare il modello su dati accurati prima di poter visualizzare l'architettura.
pip installa visualkeraspip installa ann_visualizerpip installa graphviz
Non è necessario installare separatamente la "Tensor Board" e il "Keras Model Plot". Ciò verrà fornito con l'installazione iniziale di Tensorflow e Keras.
Potremmo utilizzare solo alcune delle librerie elencate di seguito. La maggior parte delle librerie può convertire un modello TensorFlow in un diagramma senza addestrarlo esplicitamente sui dati. Puoi considerarlo come un'unica fonte di verità. Alcune librerie, come Pandas, Skimage e OpenCV, torneranno utili durante la lettura di dati strutturati o immagini.
# Importa le librerie necessarieimportare i panda come pdimporta numpy as np # Importa numpydai dati di importazione di skimage, io # Importa libreria skimage (dati - Immagini di prova e dati di esempio.# io - Lettura, salvataggio e visualizzazione di immagini.)da skimage.color importa rgb2grayimport matplotlib.pyplot as plt # Import matplotlib.pyplot (framework di stampa in Python.)%matplotlib in lineaimport os # Questo modulo fornisce un modo portabile di utilizzare le funzionalità dipendenti dal sistema operativo.os.environ['TF_CPP_MIN_LOG_LEVEL'] = '3'avvisi di importazione# Elimina gli avvisiwarnings.filterwarnings('ignora')dal display di importazione IPython.displayimporta cv2 come cv
da sklearn.metrics importa confusion_matrixda sklearn.model_selection importa train_test_splitdalle utilità di importazione tensorflow.kerasda tensorflow.keras.models importa sequenziale,load_modelda tensorflow.keras.layers importa Dense, Dropout, Flatten, Conv2D, MaxPool2D, BatchNormalizationda tensorflow.keras.optimizers importa Adamimporta tensorflow come tfimporta seaborn come sns
Alcuni collegamenti utili per esplorare da zero più contenuti su ANN e CNN.
Definiremo tre diversi modelli CNN con diversi iperparametri. Idealmente, nel mondo reale, miriamo a implementare diverse architetture per massimizzare la precisione o qualsiasi metrica rilevante, considerando che stiamo costruendo il modello per un'attività di classificazione multicategoria. La nostra scelta del tipo di problema non avrà alcun impatto su come utilizzare i pacchetti di visualizzazione.
Abbiamo creato funzioni definite dall'utente per creare tre diversi modelli separatamente con un numero diverso di livelli CNN, pooling massimo e livelli densi.
4.1 – Architettura 1 — Strati CNN superficiali + strati ANN
def modello_costrutto():modello = Sequenziale()model.add(Conv2D(filtri=64, kernel_size=(3, 3), input_shape=(128, 128, 1), attivazione='relu'))model.add(Conv2D(filtri=64, dimensione_kernel=(3, 3), attivazione='relu'))modello.add(MaxPool2D((2, 2)))model.add(Appiattisci())model.add(Dense(256, attivazione='relu'))model.add(Dense(12, attivazione='softmax'))model.compile(loss='categorical_crossentropy', ottimizzatore='adam', metrics=['accuracy'])modello di restituzione
4.2 — Architettura 2 — CNN profonda + Strati ANN superficiali
def struttura_modello():smodel = Sequenziale()smodel.add(Conv2D(filtri=64, kernel_size=(3, 3), input_shape=(128, 128, 3), attivazione='relu'))smodel.add(Conv2D(filtri=64, dimensione_kernel=(3, 3), attivazione='relu'))smodel.add(MaxPool2D((2, 2)))smodel.add(Conv2D(filtri=128, dimensione_kernel=(3, 3), attivazione='relu'))smodel.add(Conv2D(filtri=128, dimensione_kernel=(3, 3), attivazione='relu'))smodel.add(MaxPool2D((2, 2)))smodel.add(Conv2D(filtri=128, dimensione_kernel=(3, 3), attivazione='relu'))smodel.add(Conv2D(filtri=128, dimensione_kernel=(3, 3), attivazione='relu'))smodel.add(MaxPool2D((2, 2)))smodel.add(Appiattisci())smodel.add(Dense(256, attivazione='relu'))smodel.add(Dense(12, attivazione='softmax'))#ottimizzatore = Adam(lr=0.001)smodel.compile(loss='categorical_crossentropy', ottimizzatore='adam', metrics=['accuracy'])#model.summary()modello di restituzione
4.3 — Architettura 3 — Strati profondi di CNN e ANN
def cconstruct_model(tasso di apprendimento):smodel = Sequenziale()smodel.add(Conv2D(filtri=32, kernel_size=(3, 3), input_shape=(128, 128, 1), attivazione='relu'))smodel.add(Conv2D(filtri=32, dimensione_kernel=(3, 3), attivazione='relu'))smodel.add(MaxPool2D((2, 2)))smodel.add(Conv2D(filtri=64, dimensione_kernel=(3, 3), attivazione='relu'))smodel.add(Conv2D(filtri=64, dimensione_kernel=(3, 3), attivazione='relu'))smodel.add(MaxPool2D((2, 2)))smodel.add(Conv2D(filtri=128, dimensione_kernel=(3, 3), attivazione='relu'))smodel.add(Conv2D(filtri=128, dimensione_kernel=(3, 3), attivazione='relu'))smodel.add(MaxPool2D((2, 2)))smodel.add(Appiattisci())smodel.add(Dense(256, attivazione='relu'))smodel.add(Dense(256, attivazione='relu'))smodel.add(Dense(12, attivazione='softmax'))ottimizzatore = Adam(lr=tasso di apprendimento)smodel.compile(loss='categorical_crossentropy', ottimizzatore=ottimizzatore, metrics=['accuratezza'])smodel.summary()modello di restituzionemodello=cconstruct_modello(0.001)
Un modulo Python denominato ANN Visualizer consente di visualizzare una rete neurale artificiale con poche righe di codice (Gheorghiu, 2022). Utilizza il modulo Graphviz di Keras e Python per produrre un grafico di rete neurale ordinato e accattivante. Hai la flessibilità di visualizzare l'intera rete di deep learning o solo la rete neurale convoluzionale che hai creato grazie ai progressi nel deep learning (Shah, 2018).
Utilizza la struttura seguente per generare una rappresentazione PDF della tua rete neurale. Tuttavia, prima di ciò, dobbiamo compilare i modelli di cui sopra.
modello=costruisci_modello()
ann_viz(model, view=True, filename=”network.gv”, title=”MyNeural Network”)
- modello - Modello sequenziale di Keras
- visualizzazione - Visualizza il grafico dopo che è stata chiamata ann_viz()
- nome del file - Nome del file
- titolo — Qualsiasi titolo specifico per denotare il grafico
da ann_visualizer.visualize importa ann_vizann_viz(model, view=True, filename=”cconstruct_model”, title=”CNN — Modello 1 — Architettura semplice”)
Uno strumento Python chiamato Visualkeras semplifica la visualizzazione dei progetti di rete neurale Keras (separatamente o come parte di TensorFlow). La maggior parte delle esigenze di styling può essere soddisfatta con facilità. Le reti neurali convoluzionali (CNN) traggono notevoli vantaggi dallo sviluppo di architetture a strati. La maggior parte dei modelli, comprese le semplici reti feed-forward, traggono grandi benefici dalla generazione di un'architettura in stile grafico, supportata da questo modulo (Gavrikov, 2022).
modello1=costruisci_modello()modello2=sconstruct_modello()modello3=cconstruct_modello(0.009)importa visualkerasda PIL importa ImageFontvisualkeras.layered_view(model1, legend=True)visualkeras.layered_view(model2, legend=True)visualkeras.layered_view(model3, legend=True)
I keras.utils.plot_model fornisce funzioni integrate per tracciare un modello definito e compilato tramite Keras utilizzando i pacchetti Graphviz e pydot. Graficamente è meno intuitivo dei pacchetti usati sopra, ma delinea l'architettura base di un modello sequenziale (Team, nd).
tf.keras.utils.plot_model(modello1,to_file="modello.png",show_shapes=Vero,show_dtype=Falso,show_layer_names=Vero,rangodir="TB",espanso_nidificato=Vero,dpi=96,layer_range=Nessuno,show_layer_activations=Vero,)
Pochi iperparametri da considerare:
- modello: Un'istanza del modello compilato Keras o dell'oggetto modello
- in_file: Nome file dell'immagine
- mostra_forme: visualizzare la dimensione e la forma di ogni strato nella rete neurale
- mostra_attivazione_livello: visualizzare le funzioni di attivazione utilizzate all'interno dei neuroni
TensorBoard è un'interfaccia dashboard che consente agli utenti di visualizzare i log nelle diverse esecuzioni del modello. I registri possono variare dal tracciamento di qualsiasi misura di convalida del modello come accuratezza, richiamo, RMSE, MAPE e MSE in epoche diverse alla creazione di un grafico concettuale dell'architettura del modello. Si tratta di uno strumento potente per visualizzare se il modello previsto corrisponde al progetto previsto e allo stesso tempo fornire informazioni su come modificare un modello utilizzando un grafico a livello operativo.
Per utilizzare questa funzionalità dobbiamo prima caricare TensorBoard e poi creare una directory di log.
%load_ext tensorboardda datetime import datetimeda tensorflow import keras# Definisce il callback Keras TensorBoard.logdir="logs/fit/" + datetime.now().strftime("%Y%m%d-%H%M%S")tensorboard_callback = keras.callbacks.TensorBoard(log_dir=logdir)
Crea il callback Keras TensorBoard e specifica la directory del log prima dell'addestramento. Puoi assicurarti che i dati del grafico vengano registrati per la visualizzazione TensorBoard fornendo questo callback a model.fit(). Una volta richiamato TensorBoard, il caricamento potrebbe richiedere alcuni minuti.
modello.fit(X2_treno, Y2_treno,dimensione_lotto=64,epoche=5,callbacks=[tensorboard_callback])
Nota: X2_train e Y2_train sono set di dati di addestramento non riflessi nei codici sopra. Puoi sostituirlo con qualsiasi dato di allenamento personalizzato.
TensorBoard mostra sempre il grafico a livello operativo per impostazione predefinita. (Il tag "Default" è evidenziato a sinistra.) Il grafico è capovolto rispetto al codice perché i dati fluiscono dal basso verso l'alto. Ma come puoi vedere, il grafico somiglia più o meno alla descrizione del modello Keras, con bordi aggiuntivi che portano ad altri nodi di calcolo (Tensorflow, 2022).
Ulteriori informazioni su come utilizzare TensorBoard sono disponibili nella sezione Riferimento.
Da un punto di vista commerciale, in cui un utente deve presentare la propria analisi a un gruppo di parti interessate, questi diagrammi aggiungono maggiore complessità alla discussione. Potrebbero non rappresentare un valore aggiunto estremo. Tuttavia, da una prospettiva accademica e di apprendimento, è utile utilizzare questi pacchetti per visualizzare queste architetture di deep learning. Il visualizzatore ANN, per me, si distingue dagli altri poiché è facile da digerire il diagramma, mentre l'output grafico di TensorBoard richiede più dettagli tecnici prima che i risultati possano essere consumati.
Gavrikov, P. (2022, 13 aprile). visualkeras per Keras/TensorFlow. GitHub. https://github.com/paulgavrikov/visualkeras
Gheorghiu, T. (2022, 21 ottobre). Visualizzatore NN. GitHub. https://github.com/RedaOps/ann-visualizer
Shah, A. (2018, 28 aprile). Visualizzazione di reti neurali artificiali (ANN) con una sola riga di codice. Medio. https://towardsdatascience.com/visualizing-artificial-neural-networks-anns-with-just-one-line-of-code-b4233607209e
Overflow dello stack. (nd). machine learning: come visualizzare le architetture di rete neurale? Scambio di stack di scienza dei dati. Estratto il 29 ottobre 2022 da https://datascience.stackexchange.com/questions/12851/how-do-you-visualize-neural-network-architectures
Squadra, K. (nd). Documentazione Keras: utilità per il disegno di modelli. Keras.io. Estratto il 29 ottobre 2022 da https://keras.io/api/utils/model_plotting_utils/#modeltodot-function
Tensorflusso. (2022 gennaio 6). Esaminando il grafico TensorFlow | TensorBoard. TensorFlow. https://www.tensorflow.org/tensorboard/graphs
Come visualizzare le architetture di rete neurale in Python Ripubblicato dalla fonte https://towardsdatascience.com/how-to-visualize-neural-network-architectures-in-python-567cd2aa6d62?source=rss—-7f60cf5620c9—4 tramite https:// versodatascience.com/feed
<!–
->
- Bitcoin
- bizbuildermike
- blockchain
- conformità blockchain
- conferenza blockchain
- Consulenti Blockchain
- coinbase
- geniale
- Consenso
- conferenza crittografica
- criptazione mineraria
- criptovaluta
- decentrata
- DeFi
- Risorse digitali
- Ethereum
- machine learning
- gettone non fungibile
- Platone
- platone ai
- Platone Data Intelligence
- Platoneblockchain
- PlatoneDati
- gioco di plato
- Poligono
- prova di palo
- W3
- zefiro