Kako vizualizirati arhitekture nevronske mreže v Pythonu

Hiter vodnik za ustvarjanje diagramske predstavitve vaših nevronskih mrež z uporabo Jupyter ali Google Colab

Zasluga za sliko — avtor jo je razvil z uporabo visualkeras in Jupyter Notebook.

Med delom z umetnimi nevronskimi mrežami ali drugimi različicami, kot so konvolucijske nevronske mreže ali ponavljajoče se nevronske mreže, pogosto želimo vizualizirati in ustvariti diagramski prikaz našega sestavljenega modela. To lahko reši dva namena:

  1. Medtem ko definiranje in usposabljanje več modelov omogoča vizualizacijo globine našega modela in primerjavo različnih plasti ter njihovo zaporedno polaganje.
  2. Omogoča boljše razumevanje strukture modela, aktivacijskih funkcij, uporabljenih v vsaki plasti, oblike vsake plasti (število nevronov) in parametrov, ki jih je treba usposobiti.

V pythonu je na voljo nekaj paketov, ki lahko ustvarijo vizualno predstavitev naših modelov nevronske mreže. Prve tri pakete je mogoče uporabiti, še preden je model učen (model je treba samo definirati in prevesti); vendar pa Tensor Boards zahteva, da uporabnik usposobi model na točnih podatkih, preden je arhitekturo mogoče vizualizirati.

  1. Vizualizator ANN
  2. Vizualni Keras
  3. Keras Model Plot
  4. Tenzorska plošča
pip namestite visualkeraspip namestite ann_visualizerpip namestite graphviz

Ni nam treba posebej namestiti “Tensor Board” in “Keras Model Plot”. To bo priloženo začetni namestitvi Tensorflow & Keras.

Morda bomo uporabili le nekaj izmed spodaj navedenih knjižnic. Večina knjižnic lahko pretvori model TensorFlow v diagram, ne da bi ga izrecno usposobila za podatke. To lahko smatrate za en sam vir resnice. Nekatere knjižnice, kot so Pandas, Skimage in OpenCV, bodo prišle prav pri branju strukturiranih podatkov ali slik.

# Uvoz potrebnih knjižnicuvozite pande kot pduvozi numpy kot np # Uvozi numpyiz uvoznih podatkov skimage, io # Uvozi knjižnico skimage (podatki - preskusne slike in primeri podatkov.# io - Branje, shranjevanje in prikaz slik.)iz skimage.color import rgb2grayimport matplotlib.pyplot as plt # Import matplotlib.pyplot (Ogrodje za risanje v Pythonu.)%matplotlib v vrsticiimport os # Ta modul nudi prenosljiv način uporabe funkcij, odvisnih od operacijskega sistema.os.environ['TF_CPP_MIN_LOG_LEVEL'] = '3'opozorila o uvozu# Zatiranje opozorilwarnings.filterwarnings('ignore')iz IPython.display uvozi zaslonuvozi cv2 kot cv
iz sklearn.metrics uvozi confusion_matrix
iz sklearn.model_selection uvoz train_test_splitiz tensorflow.keras import utilsiz tensorflow.keras.models import Sequential,load_modeliz tensorflow.keras.layers uvozi Dense, Dropout, Flatten, Conv2D, MaxPool2D, BatchNormalizationiz tensorflow.keras.optimizers uvozi Adamuvoz tenzorskega toka kot tfuvozi pomorskega kot sns

Nekaj ​​koristnih povezav za raziskovanje več vsebine o ANN in CNN iz nič.

Definirali bomo tri različne modele CNN z različnimi hiperparametri. V idealnem primeru si v resničnem svetu prizadevamo za implementacijo različnih arhitektur, da povečamo natančnost ali katero koli ustrezno metriko, glede na to, da gradimo model za nalogo klasifikacije z več kategorijami. Naša izbira vrste problema ne bo vplivala na to, kako uporabiti pakete za vizualizacijo.

Ustvarili smo uporabniško definirane funkcije za izdelavo treh različnih modelov ločeno z različnim številom slojev CNN, maksimalnim združevanjem in gostimi sloji.

4.1 – Arhitektura 1 – Plitvi sloji CNN + sloji ANN

def construct_model():model = Sequential()model.add(Conv2D(filtri=64, kernel_size=(3, 3), input_shape=(128, 128, 1), activation='relu'))model.add(Conv2D(filtri=64, kernel_size=(3, 3), activation='relu'))model.add(MaxPool2D((2, 2)))model.add (Poravnaj ())model.add(Dense(256, activation='relu'))model.add(Dense(12, activation='softmax'))model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])povratni model

4.2 — Arhitektura 2 — Globoki CNN + plitvi sloji ANN

def sconstruct_model():smodel = Sequential()smodel.add(Conv2D(filtri=64, kernel_size=(3, 3), input_shape=(128, 128, 3), activation='relu'))smodel.add(Conv2D(filtri=64, kernel_size=(3, 3), activation='relu'))smodel.add(MaxPool2D((2, 2)))smodel.add(Conv2D(filtri=128, kernel_size=(3, 3), activation='relu'))smodel.add(Conv2D(filtri=128, kernel_size=(3, 3), activation='relu'))smodel.add(MaxPool2D((2, 2)))smodel.add(Conv2D(filtri=128, kernel_size=(3, 3), activation='relu'))smodel.add(Conv2D(filtri=128, kernel_size=(3, 3), activation='relu'))smodel.add(MaxPool2D((2, 2)))smodel.add(Flatten())smodel.add(Dense(256, activation='relu'))smodel.add(Dense(12, activation='softmax'))#optimizer = Adam(lr=0.001)smodel.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])#model.summary()povratni smodel

4.3 — Arhitektura 3 — Globoki sloji CNN & ANN

def cconstruct_model(learningRate):smodel = Sequential()smodel.add(Conv2D(filtri=32, kernel_size=(3, 3), input_shape=(128, 128, 1), activation='relu'))smodel.add(Conv2D(filtri=32, kernel_size=(3, 3), activation='relu'))smodel.add(MaxPool2D((2, 2)))smodel.add(Conv2D(filtri=64, kernel_size=(3, 3), activation='relu'))smodel.add(Conv2D(filtri=64, kernel_size=(3, 3), activation='relu'))smodel.add(MaxPool2D((2, 2)))smodel.add(Conv2D(filtri=128, kernel_size=(3, 3), activation='relu'))smodel.add(Conv2D(filtri=128, kernel_size=(3, 3), activation='relu'))smodel.add(MaxPool2D((2, 2)))smodel.add(Flatten())smodel.add(Dense(256, activation='relu'))smodel.add(Dense(256, activation='relu'))smodel.add(Dense(12, activation='softmax'))optimizator = Adam(lr=learningRate)smodel.compile(loss='categorical_crossentropy', optimizer=optimizer, metrics=['accuracy'])smodel.summary()povratni smodelmodel=cconstruct_model(0.001)

Modul Python z imenom ANN Visualizer omogoča vizualizacijo umetne nevronske mreže z nekaj vrsticami kode (Gheorghiu, 2022). Uporablja Keras in Pythonov modul Graphviz za izdelavo urejenega in privlačnega grafa nevronske mreže. Imate možnost vizualizacije celotne mreže globokega učenja ali samo konvolucijske nevronske mreže, ki ste jo ustvarili na podlagi napredka v globokem učenju (Shah, 2018).

Uporabite naslednjo strukturo, da ustvarite pdf predstavitev vaše nevronske mreže. Pred tem pa moramo sestaviti zgornje modele.

model=construct_model()

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

  • model — Zaporedni model iz Kerasa
  • pogled — Vizualizirajte graf po klicu ann_viz().
  • Ime datoteke - Ime datoteke
  • naslov — Vsak poseben naslov za označevanje grafa
iz ann_visualizer.visualize import ann_vizann_viz(model, view=True, filename=”cconstruct_model”, title=”CNN — Model 1 — Simple Architecture”)
Slika 1: Posnetek construct_model(), ustvarjen z uporabo ANN Visualizer. Zasluge — Slika, ki jo je razvil avtor z uporabo Jupyter Notebooka. prvotni izhod je prevelik, da bi bil tukaj kot slika, zato je tukaj uporabljen posnetek spodnjih plasti.

Orodje Python, imenovano Visualkeras, olajša ogled načrtov nevronske mreže Keras (ločeno ali kot del TensorFlow). Večino stilskih potreb je mogoče zadovoljiti z lahkoto. Konvolucijske nevronske mreže (CNN) imajo velike koristi od razvoja večplastnih arhitektur. Večina modelov, vključno s preprostimi omrežji za naprej, ima velike koristi od ustvarjanja arhitekture v slogu grafov, ki jo ta modul podpira (Gavrikov, 2022).

model1=construct_model()model2=sconstruct_model()model3=cconstruct_model(0.009)uvozi vizualne kereiz PIL uvozite ImageFontvisualkeras.layered_view(model1, legenda=True)visualkeras.layered_view(model2, legenda=True)visualkeras.layered_view(model3, legenda=True)
Slika 2. Ponazarja diagramski prikaz treh različnih arhitektur modela. Zasluge — Slika, ki jo je razvil avtor z uporabo Jupyter Notebooka.

O keras.utils.plot_model ponuja vgrajene funkcije za risanje modela, definiranega in prevedenega prek Kerasa z uporabo paketov Graphviz in pydot. Grafično je manj intuitiven kot zgoraj uporabljeni paketi, vendar orisuje osnovno arhitekturo zaporednega modela (Team, nd).

tf.keras.utils.plot_model(model1,to_file="model.png",show_shapes=Res,show_dtype=False,show_layer_names=Res,rankdir="TB",expand_nested=Res,dpi=96,layer_range=Brez,show_layer_activations=Res,)

Nekaj ​​hiperparametrov, ki jih je treba upoštevati:

  1. model: Primerek prevedenega modela ali objekta modela Keras
  2. v_datoteko: Ime datoteke slike
  3. pokaži_oblike: prikaz dimenzij in oblike vsake plasti v nevronski mreži
  4. show_layer_activation: prikaz aktivacijskih funkcij, ki se uporabljajo znotraj nevronov
Slika 3. Ponazarja izhod tf.keras.utils.plot_model(). Zasluge — Slika, ki jo je razvil avtor z uporabo Jupyter Notebooka.

TensorBoard je vmesnik nadzorne plošče, ki uporabnikom omogoča vizualizacijo dnevnikov v različnih izvedbah modela. Dnevniki lahko obsegajo vse od sledenja kateremu koli merilu validacije modela, kot so natančnost, priklic, RMSE, MAPE in MSE v različnih obdobjih, do ustvarjanja konceptualnega grafa arhitekture modela. Je zmogljivo orodje za vizualizacijo, ali se predvideni model ujema s pričakovano zasnovo, hkrati pa daje vpogled v to, kako je mogoče model spremeniti z uporabo grafa na ravni operacij.

Za uporabo te funkcije moramo najprej naložiti TensorBoard in nato ustvariti imenik dnevnika.

%load_ext tenzorska ploščafrom datetime uvoz datum datetimeiz uvoza tensorflow keras# Definirajte povratni klic Keras TensorBoard.logdir="logs/fit/" + datetime.now().strftime("%Y%m%d-%H%M%S")tensorboard_callback = keras.callbacks.TensorBoard(log_dir=logdir)

Ustvarite povratni klic Keras TensorBoard in določite imenik dnevnika pred usposabljanjem. Zagotovite lahko, da se podatki grafov beležijo za vizualizacijo TensorBoard, tako da posredujete ta povratni klic model.fit(). Ko prikličete TensorBoard, lahko nalaganje traja nekaj minut.

model.fit(X2_vlak, Y2_vlak,velikost_serije=64,epohe=5,povratni klici=[tensorboard_callback])

Opomba: X2_train in Y2_train sta niza podatkov o usposabljanju, ki se ne odražata v zgornjih kodah. To lahko nadomestite s poljubnimi lastnimi podatki o vadbi.

TensorBoard privzeto vedno prikaže graf operacijske ravni. (Oznaka »Privzeto« je označena na levi.) Graf je obrnjen na glavo v primerjavi s kodo, ker podatki tečejo od spodaj navzgor. Toda kot lahko vidite, je graf približno podoben opisu modela Keras, z dodatnimi robovi, ki vodijo do drugih računskih vozlišč (Tensorflow, 2022).

Slika 4. Ponazarja izhod TensorBoard. Zasluge — Slika, ki jo je razvil avtor z uporabo Jupyter Notebooka.

Več o tem, kako uporabljati TensorBoard, najdete pod Referenca.

S komercialnega vidika, kjer mora uporabnik predstaviti svojo analizo skupini zainteresiranih strani, ti diagrami dodatno zapletejo razpravo. Morda niso izjemna dodana vrednost. Vendar pa je z akademskega in učnega vidika koristno uporabiti te pakete za prikaz teh arhitektur globokega učenja. Zame vizualizator ANN izstopa od ostalih, saj je lahko prebaviti diagram, medtem ko izpis grafa TensorBoarda zahteva več tehničnih podrobnosti, preden se lahko uporabijo rezultati.

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

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

Shah, A. (2018, 28. april). Vizualizacija umetnih nevronskih mrež (ANN) s samo eno vrstico kode. Srednje. https://towardsdatascience.com/visualizing-artificial-neural-networks-anns-with-just-one-line-of-code-b4233607209e

Preobremenitev. (nd). strojno učenje - Kako vizualizirate arhitekture nevronskih mrež? Data Science Stack Exchange. Pridobljeno 29. oktobra 2022 iz https://datascience.stackexchange.com/questions/12851/how-do-you-visualize-neural-network-architectures

Ekipa, K. (nd.). Dokumentacija Keras: pripomočki za risanje modela. Keras.io. Pridobljeno 29. oktobra 2022 iz https://keras.io/api/utils/model_plotting_utils/#modeltodot-function

Tensorflow. (2022, 6. januar). Pregledovanje grafa TensorFlow | TensorBoard. TensorFlow. https://www.tensorflow.org/tensorboard/graphs

Kako vizualizirati arhitekture nevronske mreže v Pythonu Ponovno objavljeno iz vira https://towardsdatascience.com/how-to-visualize-neural-network-architectures-in-python-567cd2aa6d62?source=rss—-7f60cf5620c9—4 prek https:// towarddatascience.com/feed

<!–

->

Časovni žig:

Več od Svetovalci v verigi blokov