Kuinka visualisoida hermoverkkoarkkitehtuurit Pythonissa

Pikaopas hermoverkkojesi kaaviomaisen esityksen luomiseen Jupyterin tai Google Colabin avulla

Image Credit — Tekijän kehittämä visualkerasin ja Jupyter Notebookin avulla.

Usein työskennellessämme keinotekoisten hermoverkkojen tai muiden muunnelmien, kuten Convolution Neural Networks tai Recurrent Neural Networks, kanssa haluamme visualisoida ja luoda kaaviomaisen esityksen käännetystä mallistamme. Tämä voi ratkaista kaksi tarkoitusta:

  1. Kun määritämme ja harjoittelemme useita malleja, voimme visualisoida mallimme syvyyden ja verrata eri tasoja ja niiden peräkkäistä asettelua.
  2. Mahdollistaa paremman ymmärryksen mallin rakenteesta, kussakin kerroksessa käytetyistä aktivointitoiminnoista, kunkin kerroksen muodosta (hermosolujen lukumäärästä) ja parametreista, jotka on koulutettava

Pythonissa on helposti saatavilla muutamia paketteja, jotka voivat luoda visuaalisen esityksen hermoverkkomalleistamme. Kolmea ensimmäistä pakettia voidaan käyttää jo ennen kuin malli on koulutettu (malli täytyy vain määritellä ja kääntää); Tensor Boards edellyttää kuitenkin, että käyttäjä kouluttaa mallin tarkalle tiedolle ennen kuin arkkitehtuuri voidaan visualisoida.

  1. ANN Visualisoija
  2. Visuaalinen Keras
  3. Keras Mallin tontti
  4. Tensor Board
pip install visualkeraspip install ann_visualizerpip asennus graphviz

Meidän ei tarvitse asentaa "Tensor Boardia" ja "Keras Model Plot" erikseen. Tämä tulee Tensorflow & Kerasin ensimmäisen asennuksen yhteydessä.

Saatamme käyttää vain muutamia alla luetelluista kirjastoista. Useimmat kirjastot voivat muuntaa TensorFlow-mallin kaavioksi opettamatta sitä nimenomaisesti dataan. Voit pitää tätä yhtenä totuuden lähteenä. Jotkut kirjastot, kuten Pandas, Skimage ja OpenCV, ovat hyödyllisiä luettaessa strukturoitua dataa tai kuvia.

# Tuo tarvittavat kirjastottuoda pandat pd-muodossaimport numpy as np # Import numpyskimage-tuontitiedoista, io # Tuo skimage-kirjasto (data - Testikuvat ja esimerkkitiedot.# io - Kuvien lukeminen, tallentaminen ja näyttäminen.)osoitteesta skimage.color import rgb2graytuonti matplotlib.pyplot muodossa plt # Tuo matplotlib.pyplot (Pythonin piirroskehys.)% matplotlib inlineimport os # Tämä moduuli tarjoaa kannettavan tavan käyttää käyttöjärjestelmästä riippuvia toimintoja.os.environ['TF_CPP_MIN_LOG_LEVEL'] = '3'tuontivaroitukset# Poista varoituksetwarnings.filterwarnings('ohita')IPython.display tuontinäytöstätuo cv2 cv:nä
osoitteesta sklearn.metrics tuonti confusion_matrix
from sklearn.model_selection tuo juna_testi_splitosoitteesta tensorflow.keras import utilsosoitteesta tensorflow.keras.models tuonti Sequential,load_modelosoitteesta tensorflow.keras.layers tuo Dense, Dropout, Flatten, Conv2D, MaxPool2D, BatchNormalizationosoitteesta tensorflow.keras.optimizers tuo Adamtuo tensorflow tf: nätuota merituoretta sns-muodossa

Hyödyllisiä linkkejä, joiden avulla voit tutkia lisää sisältöä ANN- ja CNN-verkkojen ympäriltä alusta alkaen.

Määrittelemme kolme erilaista CNN-mallia erilaisilla hyperparametreilla. Ihannetapauksessa todellisessa maailmassa pyrimme toteuttamaan erilaisia ​​arkkitehtuureja tarkkuuden tai asiaankuuluvien mittareiden maksimoimiseksi, kun otetaan huomioon, että rakennamme mallia usean luokan luokitustehtävälle. Ongelmatyypin valinnallamme ei ole vaikutusta visualisointipakettien käyttöönotossa.

Loimme käyttäjän määrittämiä toimintoja kolmen eri mallin rakentamiseksi erikseen eri CNN-kerroksilla, max-poolingilla ja tiheillä kerroksilla.

4.1 – Arkkitehtuuri 1 – Matalat CNN-kerrokset + ANN-kerrokset

def construct_model():malli = Peräkkäinen ()model.add(Conv2D(suodattimet=64, ytimen_koko=(3, 3), input_shape=(128, 128, 1), aktivointi='relu'))model.add(Conv2D(suodattimet=64, kernel_size=(3, 3), aktivointi='relu'))model.add(MaxPool2D((2, 2)))model.add (Flatten ())model.add(Tiheä(256, aktivointi='relu'))model.add(Tihe(12, aktivointi='softmax'))model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['tarkkuus'])palautusmalli

4.2 — Arkkitehtuuri 2 — syvä CNN + matalat ANN-kerrokset

def sconstruct_model():smodel = peräkkäinen()smodel.add(Conv2D(suodattimet=64, ytimen_koko=(3, 3), input_shape=(128, 128, 3), aktivointi='relu'))smodel.add(Conv2D(suodattimet=64, kernel_size=(3, 3), aktivointi='relu'))smodel.add(MaxPool2D((2, 2)))smodel.add(Conv2D(suodattimet=128, kernel_size=(3, 3), aktivointi='relu'))smodel.add(Conv2D(suodattimet=128, kernel_size=(3, 3), aktivointi='relu'))smodel.add(MaxPool2D((2, 2)))smodel.add(Conv2D(suodattimet=128, kernel_size=(3, 3), aktivointi='relu'))smodel.add(Conv2D(suodattimet=128, kernel_size=(3, 3), aktivointi='relu'))smodel.add(MaxPool2D((2, 2)))smodel.add(Liitä())smodel.add(Tiheä(256, aktivointi='relu'))smodel.add(Tiheä(12, aktivointi='softmax'))#optimizer = Adam(lr=0.001)smodel.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['tarkkuus'])#model.summary()paluumalli

4.3 — Arkkitehtuuri 3 — syvät CNN- ja ANN-tasot

def cconstruct_model(learningRate):smodel = peräkkäinen()smodel.add(Conv2D(suodattimet=32, ytimen_koko=(3, 3), input_shape=(128, 128, 1), aktivointi='relu'))smodel.add(Conv2D(suodattimet=32, kernel_size=(3, 3), aktivointi='relu'))smodel.add(MaxPool2D((2, 2)))smodel.add(Conv2D(suodattimet=64, kernel_size=(3, 3), aktivointi='relu'))smodel.add(Conv2D(suodattimet=64, kernel_size=(3, 3), aktivointi='relu'))smodel.add(MaxPool2D((2, 2)))smodel.add(Conv2D(suodattimet=128, kernel_size=(3, 3), aktivointi='relu'))smodel.add(Conv2D(suodattimet=128, kernel_size=(3, 3), aktivointi='relu'))smodel.add(MaxPool2D((2, 2)))smodel.add(Liitä())smodel.add(Tiheä(256, aktivointi='relu'))smodel.add(Tiheä(256, aktivointi='relu'))smodel.add(Tiheä(12, aktivointi='softmax'))optimoija = Adam(lr=oppimisnopeus)smodel.compile(loss='categorical_crossentropy', optimizer=optimizer, metrics=['tarkkuus'])smodel.summary()paluumallimodel=ccconstruct_model(0.001)

Python-moduuli nimeltä ANN Visualizer mahdollistaa keinotekoisen hermoverkon visualisoinnin muutamalla koodirivillä (Gheorghiu, 2022). Se käyttää Kerasin ja Pythonin Graphviz-moduulia tuottamaan siistin ja houkuttelevan hermoverkkokaavion. Sinulla on joustavuus visualisoida koko Deep Learning Network tai vain konvoluutiohermoverkko, jonka olet luonut syväoppimisen edistymisen johdosta (Shah, 2018).

Käytä alla olevaa rakennetta luodaksesi pdf-esityksen hermoverkostasi. Ennen sitä meidän on kuitenkin koottava yllä olevat mallit.

model=construct_model()

ann_viz(malli, view=True, filename=”network.gv”, title=”MyNeural Network”)

  • malli - Kerasin sarjamalli
  • näkymä - Visualisoi kuvaaja sen jälkeen, kun ann_viz() on kutsuttu
  • Tiedoston nimi - Tiedoston nimi
  • otsikko - Mikä tahansa tietty otsikko kaavion kuvaamiseksi
osoitteesta ann_visualizer.visualize tuonti ann_vizann_viz(malli, view=True, filename=”cconstruct_model”, title=”CNN — Malli 1 — Simple Architecture”)
Kuva 1: Tilannekuva construct_model():sta, joka on luotu ANN Visualizer -sovelluksella. Tekijä — Kuva, jonka tekijä on kehittänyt käyttämällä Jupyter Notebookia. alkuperäinen tuloste on liian suuri mahtumaan tähän kuvana, joten tässä käytetään pikakuvaa alimmista kerroksista.

Python-työkalu nimeltä Visualkeras helpottaa Keras-hermoverkkosuunnitelmien näkemistä (joko erikseen tai osana TensorFlow'ta). Suurin osa muotoilutarpeista voidaan täyttää helposti. Konvoluutiohermoverkot (CNN) hyötyvät merkittävästi kerrosmaisten arkkitehtuurien kehittämisestä. Useimmat mallit, mukaan lukien yksinkertaiset myötäkytkentäiset verkot, hyötyvät suuresti graafityylisen arkkitehtuurin luomisesta, jota tämä moduuli tukee (Gavrikov, 2022).

malli1=rakenne_malli()malli2=rakenne_malli()malli3=ccconstruct_model(0.009)tuo visualkeratPIL-tuonti ImageFontistavisualkeras.layered_view(malli1, legenda=True)visualkeras.layered_view(malli2, legenda=True)visualkeras.layered_view(malli3, legenda=True)
Kuva 2. Havainnollistaa kaaviomaisen esityksen kolmesta eri malliarkkitehtuurista. Tekijä — Kuva, jonka tekijä on kehittänyt käyttämällä Jupyter Notebookia.

- keras.utils.plot_model tarjoaa sisäänrakennettuja toimintoja Kerasin kautta määritellyn ja käännetyn mallin piirtämiseen Graphviz- ja pydot-pakettien avulla. Graafisesti se on vähemmän intuitiivinen kuin yllä käytetyt paketit, mutta se hahmottaa peräkkäisen mallin perusarkkitehtuurin (Team, nd).

tf.keras.utils.plot_model(malli 1,to_file="malli.png",show_shapes = Totta,show_dtype=Epätosi,show_layer_names = Totta,rankdir="TB",expand_nested=Totta,dpi = 96,layer_range=Ei mitään,show_layer_activations=Totta,)

Muutamia huomioitavia hyperparametreja:

  1. malli: Kerasin käännetyn mallin tai malliobjektin esiintymä
  2. arkistoida: Kuvan tiedostonimi
  3. show_shapes: näyttää hermoverkon jokaisen kerroksen ulottuvuuden ja muodon
  4. show_layer_activation: Neuroneissa käytetyt näytön aktivointitoiminnot
Kuva 3. Havainnollistaa tf.keras.utils.plot_model() tulosteen. Tekijä — Kuva, jonka tekijä on kehittänyt käyttämällä Jupyter Notebookia.

TensorBoard on kojelautakäyttöliittymä, jonka avulla käyttäjät voivat visualisoida lokeja eri malliajoissa. Lokit voivat vaihdella minkä tahansa mallin validointimitan, kuten tarkkuuden, palautuksen, RMSE:n, MAPE:n ja MSE:n, seuraamisesta eri aikakausilta käsitteellisen kaavion luomiseen mallin arkkitehtuurista. Se on tehokas työkalu, jonka avulla voit visualisoida, vastaako suunniteltu malli odotettua suunnittelua, samalla kun saa näkemyksiä siitä, kuinka mallia voidaan muuttaa operaatiotason kaavion avulla.

Käyttääksemme tätä toimintoa meidän on ensin ladattava TensorBoard ja luotava sitten lokihakemisto.

%load_ext tensorboardalkaen datetime tuonti datetimetensorflow import kerasista# Määritä Keras TensorBoardin takaisinsoitto.logdir="logs/fit/" + datetime.now().strftime("%Y%m%d-%H%M%S")tensorboard_callback = keras.callbacks.TensorBoard(log_dir=logdir)

Luo Keras TensorBoardin takaisinsoitto ja määritä lokihakemisto ennen harjoittelua. Voit varmistaa, että kaaviotiedot kirjataan lokiin TensorBoard-visualisointia varten toimittamalla tämän takaisinkutsun malliin.fit(). Kun käynnistät TensorBoardin, sen lataaminen voi kestää muutaman minuutin.

malli.fit(X2_train, Y2_train,batch_size=64,epochs=5,callbacks=[tensorboard_callback])

Huomautus: X2_train ja Y2_train ovat harjoitustietojoukkoja, jotka eivät näy yllä olevissa koodeissa. Voit korvata tämän millä tahansa omilla harjoitustiedoillasi.

TensorBoard näyttää aina oletusarvoisesti toimintatason kaavion. (Oletustunniste on korostettuna vasemmalla.) Kaavio on ylösalaisin koodiin verrattuna, koska data virtaa alhaalta ylös. Mutta kuten näet, kaavio muistuttaa suurin piirtein Keras-mallin kuvausta lisäreunoilla, jotka johtavat muihin laskentasolmuihin (Tensorflow, 2022).

Kuva 4. Havainnollistaa TensorBoardin ulostuloa. Tekijä — Kuva, jonka tekijä on kehittänyt käyttämällä Jupyter Notebookia.

Lisätietoa TensorBoardin käytöstä löytyy kohdasta Viite.

Kaupallisesta näkökulmasta, jossa käyttäjän on esitettävä analyysinsä sidosryhmille, nämä kaaviot lisäävät keskustelun monimutkaisuutta. Ne eivät välttämättä ole äärimmäistä lisäarvoa. Kuitenkin akateemisesta ja oppimisen näkökulmasta näiden pakettien hyödyntäminen näiden syvien oppimisarkkitehtuurien näyttämiseksi on ansiokasta. Minusta ANN-visualisoija erottuu muista, koska se on helppo sulattaa kaavion, kun taas TensorBoardin graafitulostus vaatii enemmän teknisiä ominaisuuksia, ennen kuin tuloksia voidaan käyttää.

Gavrikov, P. (2022, 13. huhtikuuta). visualkeras Keras / TensorFlow. GitHub. https://github.com/paulgavrikov/visualkeras

Gheorghiu, T. (2022, 21. lokakuuta). ANN Visualisoija. GitHub. https://github.com/RedaOps/ann-visualizer

Shah, A. (2018, 28. huhtikuuta). Keinotekoisten hermoverkkojen (ANN:iden) visualisointi vain yhdellä koodirivillä. Keskikokoinen. https://towardsdatascience.com/visualizing-artificial-neural-networks-anns-with-just-one-line-of-code-b4233607209e

Pinon ylivuoto. (nd). koneoppiminen — Kuinka visualisoit hermoverkkoarkkitehtuurit? Data Science Stack Exchange. Haettu 29. lokakuuta 2022 alkaen https://datascience.stackexchange.com/questions/12851/how-do-you-visualize-neural-network-architectures

Team, K. (nd). Keras-dokumentaatio: Mallin piirtämisapuohjelmat. Keras.io. Haettu 29. lokakuuta 2022 alkaen https://keras.io/api/utils/model_plotting_utils/#modeltodot-function

Tensorflow. (2022, 6. tammikuuta). TensorFlow-kaavion tutkiminen | TensorBoard. TensorFlow. https://www.tensorflow.org/tensorboard/graphs

Pythonin hermoverkkoarkkitehtuurien visualisointi uudelleen julkaistu lähteestä https://towardsdatascience.com/how-to-visualize-neural-network-architectures-in-python-567cd2aa6d62?source=rss—-7f60cf5620c9—4 kohti datatascience.com/feed

<!-

->

Aikaleima:

Lisää aiheesta Blockchain-konsultit