Kuidas visualiseerida Pythonis närvivõrgu arhitektuure

Lühijuhend oma närvivõrkude skemaatilise esituse loomiseks Jupyteri või Google Colabi abil

Pildi krediit – autor on välja töötanud visualkerade ja Jupyteri sülearvuti abil.

Sageli töötades tehisnärvivõrkudega või muude variatsioonidega, nagu konvolutsiooninärvivõrgud või korduvad närvivõrgud, tahame oma koostatud mudelit visualiseerida ja luua skemaatilise esituse. See võib lahendada kaks eesmärki:

  1. Mitme mudeli määratlemine ja treenimine võimaldab meil visualiseerida oma mudeli sügavust ning võrrelda erinevaid kihte ja nende järjestikust paigutust.
  2. Võimaldab paremini mõista mudeli struktuuri, igas kihis kasutatavaid aktiveerimisfunktsioone, iga kihi kuju (neuronite arvu) ja treenimist vajavaid parameetreid

Pythonis on hõlpsasti saadaval mõned paketid, mis võivad luua meie närvivõrgu mudelite visuaalse esituse. Kolme esimest paketti saab kasutada isegi enne mudeli väljaõpet (mudel tuleb ainult defineerida ja kompileerida); Tensor Boards nõuab aga, et kasutaja koolitaks mudelit täpsete andmete põhjal, enne kui arhitektuuri saab visualiseerida.

  1. ANN visualiseerija
  2. Visuaalne Keras
  3. Kerase näidiskrunt
  4. Tensori juhatus
pip install visualkeraspip install ann_visualizerpip install graphviz

Me ei pea "Tensor Board" ja "Keras Model Plot" eraldi installima. See tuleb koos Tensorflow & Kerase esmase installimisega.

Võime kasutada ainult mõnda allpool loetletud teeki. Enamik teeke saab TensorFlow mudeli diagrammiks teisendada ilma seda andmete põhjal selgesõnaliselt õpetamata. Võite seda pidada üheks tõeallikaks. Mõned teegid, nagu Pandas, Skimage ja OpenCV, on kasulikud struktureeritud andmete või piltide lugemisel.

# Importige vajalikud raamatukogudimpordi pandad kui pdimport numpy as np # Impordi numpyskimage impordi andmetest, io # Impordi skimage teegi (andmed – katsepildid ja näidisandmed.# io – piltide lugemine, salvestamine ja kuvamine.)saidilt skimage.color import rgb2grayimportida matplotlib.pyplot kui plt # Importida matplotlib.pyplot (Pythoni graafikuraamistik.)%matplotlib reasimport os # See moodul pakub kaasaskantavat viisi operatsioonisüsteemist sõltuvate funktsioonide kasutamiseks.os.environ['TF_CPP_MIN_LOG_LEVEL'] = "3"impordihoiatused# Lülitage hoiatused väljaWarnings.filterwarnings('ignoreeri')IPython.display impordikuvastimport cv2 cv-na
failist sklearn.metrics impordi confusion_matrix
saidilt sklearn.model_selection import train_test_splitfrom tensorflow.keras import utilssaidilt tensorflow.keras.models import Sequential,load_modelsaidilt tensorflow.keras.layers impordi tihe, väljalangetav, lame, Conv2D, MaxPool2D, BatchNormalizationsaidilt tensorflow.keras.optimizers impordi Adamimport tensorflow kui tfimportida meresündinud sns

Mõned kasulikud lingid ANN-ide ja CNN-ide sisu uurimiseks nullist.

Me määratleme kolm erinevat CNN-i mudelit erinevate hüperparameetritega. Ideaalis on meie eesmärk reaalses maailmas rakendada erinevaid arhitektuure, et maksimeerida täpsust või mis tahes asjakohaseid mõõdikuid, võttes arvesse, et ehitame mudelit mitme kategooria klassifitseerimisülesande jaoks. Meie probleemitüübi valik ei mõjuta visualiseerimispakettide kasutuselevõttu.

Lõime kasutaja määratud funktsioonid, et ehitada eraldi kolm erinevat mudelit erineva arvu CNN-kihtide, maksimaalse ühiskasutuse ja tihedate kihtidega.

4.1 – 1. arhitektuur – madalad CNN-kihid + ANN-kihid

def construct_model():mudel = järjestikune ()model.add(Conv2D(filtrid=64, kerneli_suurus=(3, 3), sisendi_kuju=(128, 128, 1), aktiveerimine=’relu’))model.add(Conv2D(filtrid=64, kerneli_suurus=(3, 3), aktiveerimine='relu'))model.add(MaxPool2D((2, 2)))model.add(Flatten())model.add(Tihe(256, activation='relu'))model.add(Tihe(12, activation='softmax'))model.comile(loss='categorical_crossentropy', optimeerija='adam', metrics=['täpsus'])tagastamise mudel

4.2 – Arhitektuur 2 – sügav CNN + madalad ANN-kihid

def sconstruct_model():smodel = järjestikune()smodel.add(Conv2D(filtrid=64, kerneli_suurus=(3, 3), sisendi_kuju=(128, 128, 3), aktiveerimine=’relu’))smodel.add(Conv2D(filtrid=64, kerneli_suurus=(3, 3), aktiveerimine='relu'))smodel.add(MaxPool2D((2, 2)))smodel.add(Conv2D(filtrid=128, kerneli_suurus=(3, 3), aktiveerimine='relu'))smodel.add(Conv2D(filtrid=128, kerneli_suurus=(3, 3), aktiveerimine='relu'))smodel.add(MaxPool2D((2, 2)))smodel.add(Conv2D(filtrid=128, kerneli_suurus=(3, 3), aktiveerimine='relu'))smodel.add(Conv2D(filtrid=128, kerneli_suurus=(3, 3), aktiveerimine='relu'))smodel.add(MaxPool2D((2, 2)))smodel.add(Lamenda())smodel.add(Tihe(256, activation='relu'))smodel.add(Tihe(12, activation='softmax'))#optimizer = Adam(lr=0.001)smodel.comile(loss=’categorical_crossentropy’, optimeerija=’adam’, metrics=[’täpsus’])#modell.summary()tagasi mudel

4.3 – Arhitektuur 3 – sügavad CNN- ja ANN-kihid

def cconstruct_model(learningRate):smodel = järjestikune()smodel.add(Conv2D(filtrid=32, kerneli_suurus=(3, 3), sisendi_kuju=(128, 128, 1), aktiveerimine=’relu’))smodel.add(Conv2D(filtrid=32, kerneli_suurus=(3, 3), aktiveerimine='relu'))smodel.add(MaxPool2D((2, 2)))smodel.add(Conv2D(filtrid=64, kerneli_suurus=(3, 3), aktiveerimine='relu'))smodel.add(Conv2D(filtrid=64, kerneli_suurus=(3, 3), aktiveerimine='relu'))smodel.add(MaxPool2D((2, 2)))smodel.add(Conv2D(filtrid=128, kerneli_suurus=(3, 3), aktiveerimine='relu'))smodel.add(Conv2D(filtrid=128, kerneli_suurus=(3, 3), aktiveerimine='relu'))smodel.add(MaxPool2D((2, 2)))smodel.add(Lamenda())smodel.add(Tihe(256, activation='relu'))smodel.add(Tihe(256, activation='relu'))smodel.add(Tihe(12, activation='softmax'))optimeerija = Adam(lr=õppemäär)smodel.comile(loss=’categorical_crossentropy’, optimeerija=optimeerija, metrics=[’täpsus’])smodel.summary()tagasi mudelmodel=ccconstruct_model(0.001)

Pythoni moodul nimega ANN Visualizer võimaldab visualiseerida tehisnärvivõrku mõne koodireaga (Gheorghiu, 2022). See kasutab Kerase ja Pythoni Graphvizi moodulit, et luua korralik ja ahvatlev närvivõrgu graafik. Teil on paindlikkus visualiseerida kogu süvaõppevõrku või ainult konvolutsioonilist närvivõrku, mille olete loonud tänu süvaõppe edusammudele (Shah, 2018).

Kasutage oma närvivõrgu pdf-esitluse loomiseks järgmist struktuuri. Kuid enne seda peame ülaltoodud mudelid koostama.

model=construct_model()

ann_viz(mudel, vaade=True, failinimi=”network.gv”, title=”MyNeural Network”)

  • mudel — Kerase järjestikune mudel
  • vaade — Visualiseerige graafik pärast ann_viz() kutsumist
  • faili nimi - Faili nimi
  • pealkiri — Mis tahes konkreetne pealkiri graafiku tähistamiseks
ann_visualizer.visualize import ann_vizann_viz(mudel, vaade=True, failinimi=”cconstruct_model”, title=”CNN – mudel 1 – lihtne arhitektuur”)
Joonis 1: ANN Visualizeri abil loodud construct_model() hetktõmmis. Krediit – pilt, mille autor on Jupyteri sülearvuti abil välja töötanud. algne väljund on liiga suur, et siia pildina mahtuda, seetõttu kasutatakse siin alumiste kihtide kiirvõtet.

Pythoni tööriist nimega Visualkeras muudab Kerase närvivõrgu kujunduste nägemise lihtsamaks (kas eraldi või TensorFlow osana). Enamikku stiilivajadusi saab hõlpsasti rahuldada. Konvolutsioonilised närvivõrgud (CNN-id) saavad kihilise stiiliga arhitektuuride arendamisest märkimisväärset kasu. Enamik mudeleid, sealhulgas lihtsad edasisaatmisvõrgud, saavad suurt kasu graafiku stiilis arhitektuuri loomisest, mida see moodul toetab (Gavrikov, 2022).

mudel1=konstrueeri_mudel()mudel2=konstrueeri_mudel()mudel3=ccconstruct_model(0.009)importida visualkerasidPIL-i impordist ImageFontvisualkeras.layered_view(mudel1, legend=True)visualkeras.layered_view(mudel2, legend=True)visualkeras.layered_view(mudel3, legend=True)
Joonis 2. Illustreerib kolme erineva mudeliarhitektuuri skemaatiliselt. Krediit – pilt, mille autor on Jupyteri sülearvuti abil välja töötanud.

. keras.utils.plot_model pakub sisseehitatud funktsioone Kerase kaudu defineeritud ja kompileeritud mudeli joonistamiseks, kasutades Graphvizi ja pydot pakette. Graafiliselt on see vähem intuitiivne kui ülaltoodud paketid, kuid see kirjeldab järjestikuse mudeli (Team, n.d.) põhiarhitektuuri.

tf.keras.utils.plot_model(mudel1,to_file="mudel.png",show_shapes=Tõsi,show_dtype=Vale,show_layer_names=Tõsi,rankdir="TB",expand_nested=Tõsi,dpi = 96,layer_range=Puudub,show_layer_activations=Tõsi,)

Mõned hüperparameetrid, mida tuleks arvesse võtta:

  1. mudel: Kerase kompileeritud mudeli või mudelobjekti eksemplar
  2. to_file: Pildi failinimi
  3. show_shapes: kuvada närvivõrgu iga kihi mõõtmed ja kuju
  4. show_layer_activation: kuvada neuronites kasutatavad aktiveerimisfunktsioonid
Joonis 3. Illustreerib tf.keras.utils.plot_model() väljundit. Krediit – pilt, mille autor on Jupyteri sülearvuti abil välja töötanud.

TensorBoard on armatuurlaua liides, mis võimaldab kasutajatel visualiseerida erinevate mudelite logisid. Logid võivad ulatuda mis tahes mudeli valideerimismeetmete (nt täpsus, tagasikutsumine, RMSE, MAPE ja MSE) jälgimisest erinevatel ajajärkudel kuni mudeli arhitektuuri kontseptuaalse graafiku loomiseni. See on võimas tööriist, mis võimaldab visualiseerida, kas kavandatud mudel vastab eeldatavale kujundusele, pakkudes samal ajal teavet selle kohta, kuidas mudelit operatsioonitaseme graafiku abil muuta.

Selle funktsiooni kasutamiseks peame esmalt laadima TensorBoardi ja seejärel looma logikataloogi.

%load_ext tensorboardalates datetime impordi datetimetensorflow import kerast# Määrake Keras TensorBoardi tagasihelistamine.logdir="logs/fit/" + datetime.now().strftime("%Y%m%d-%H%M%S")tensorboard_callback = keras.callbacks.TensorBoard(log_dir=logdir)

Looge Keras TensorBoardi tagasihelistamine ja määrake enne treenimist logikataloog. Saate tagada, et graafiku andmed logitakse TensorBoardi visualiseerimiseks, esitades selle tagasikutsumise saidile model.fit(). Pärast TensorBoardi käivitamist võib selle laadimiseks kuluda mõni minut.

model.fit(X2_rong, Y2_rong,batch_size=64,epohhid = 5,callbacks=[tensorboard_callback])

Märkus. X2_train ja Y2_train on treeninguandmed, mida ülaltoodud koodid ei kajasta. Saate selle asendada mis tahes enda treeningandmetega.

TensorBoard näitab vaikimisi alati operatsioonitaseme graafikut. (Märgend „Vaikimisi” on vasakul esile tõstetud.) Graafik on koodiga võrreldes tagurpidi, kuna andmed liiguvad alt üles. Kuid nagu näete, sarnaneb graafik ligikaudu Kerase mudeli kirjeldusega, lisaservadega, mis viivad teiste arvutussõlmedeni (Tensorflow, 2022).

Joonis 4. Illustreerib TensorBoardi väljundit. Krediit – pilt, mille autor on Jupyteri sülearvuti abil välja töötanud.

Lisateavet TensorBoardi kasutamise kohta leiate jaotisest Viide.

Kaubanduslikust vaatenurgast, kus kasutaja peab esitama oma analüüsi sidusrühmade rühmale, muudavad need diagrammid arutelule keerukamaks. Need ei pruugi olla äärmuslikud lisaväärtused. Kuid akadeemilisest ja õppimise vaatenurgast on nende pakettide kasutamine nende sügavate õppearhitektuuride kuvamiseks kasulik. Minu arvates paistab ANN visualiseerija teistest silma, kuna diagrammi on lihtne seedida, samas kui TensorBoardi graafiku väljund nõuab enne tulemuste tarbimist rohkem tehnilisi üksikasju.

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

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

Shah, A. (2018, 28. aprill). Tehisnärvivõrkude (ANN-ide) visualiseerimine vaid ühe koodireaga. Keskmine. https://towardsdatascience.com/visualizing-artificial-neural-networks-anns-with-just-one-line-of-code-b4233607209e

Stack Overflow. (n.d.). masinõpe – kuidas kujutate närvivõrgu arhitektuure? Data Science Stack Exchange. Vaadatud 29. oktoober 2022, alates https://datascience.stackexchange.com/questions/12851/how-do-you-visualize-neural-network-architectures

Meeskond, K. (n.d.). Kerase dokumentatsioon: Mudeli joonistamise utiliidid. Keras.io. Vaadatud 29. oktoober 2022, alates https://keras.io/api/utils/model_plotting_utils/#modeltodot-function

Tensorflow. (2022, 6. jaanuar). TensorFlow graafiku uurimine | TensorBoard. TensorFlow. https://www.tensorflow.org/tensorboard/graphs

Kuidas visualiseerida Pythoni närvivõrguarhitektuure, uuesti avaldatud allikast https://towardsdatascience.com/how-to-visualize-neural-network-architectures-in-python-567cd2aa6d62?source=rss—-7f60cf5620c9—4 kaudu suunas datatascience.com/feed

<!–

->

Ajatempel:

Veel alates Blockchaini konsultandid