Yapay sinir ağ mimarilerini nasıl görselleştirirsiniz?


79

Bir makale yazarken / sinir ağları ile ilgili bir konu hakkında sunum yaparken, genellikle ağ mimarisi görselleştirilir.

Ortak mimarileri otomatik olarak görselleştirmek için iyi / basit yollar nelerdir?




1
Derin öğrenme görselleştirme yaklaşımlarıyla (hem manuel hem de otomatik) yapılan bir anketle , basitleştirilmiş sinir ağlarının basit diyagramlarını yazdım . Çok fazla ilham aldım ve bu konudaki linkler - thx!
Piotr Migdal

Yanıtlar:


25

Tensorflow, Keras, MXNet, PyTorch

Sinir ağı bir Tensorflow grafiği olarak verilirse, bu grafiği TensorBoard ile görselleştirebilirsiniz .

MNIST CNN'nin görünüşü şöyle:

görüntü tanımını buraya girin

Kendinize ad / kapsam ("bırakma", "softmax", "fc1", "conv1", "conv2" gibi) ekleyebilirsiniz.

yorumlama

Aşağıdaki sadece soldaki grafikle ilgilidir. Sağdaki 4 küçük grafiği görmezden geldim.

Her kutu öğrenilebilecek parametrelere sahip bir katmandır. Çıkarım için bilgi aşağıdan yukarı doğru akar. Elipsler, öğrenilmiş parametreler içermeyen katmanlardır.

Kutuların renginin bir anlamı yoktur.

Kesikli küçük kutuların ("gradyanlar", "Adam", "kaydet") değerlerinden emin değilim.


iyidir, conv1, conv2 vb. gibi isimlerden kaçınmaya çalışıyorum, conv isminin tamamını CONV, daha sonra nasıl yapacağım?
Sudip Das

+1. Yine de sadece TF için değil: MXNet ve Pytorch'in de desteği var
Jakub Bartczuk

@SudipDas Koddaki adları, çizdiğiniz sırada görünecek olan katmanlara ekleyebilirsiniz.
Ben

Her katmanın adını "CONV" olarak göstereceğim, eğer her katmanın "CONV" olarak yazarsak hata alıyorum, çünkü her katmanın tf kuralları olarak benzersiz bir adı olması gerekir, ama bilmek istiyorum, Bu sorunun üstesinden gelmek için başka bir yol var mı ?? @Ben
Sudip Das

1
@onof Bağlantıyı düzelttim
Martin Thoma

23

Kısa bir süre önce NN mimarilerini çizmek ve NG-SVG denilen SVG'yi dışa aktarmak için bir araç geliştirdim

görüntü tanımını buraya girin


1
İndir SVG çalışmıyor
görüntü

benim için çalışıyor 1/23/19. Hala bir sorun yaşıyorsanız, bir sorun açmaktan çekinmeyin.
Alex Lenail

1
Bu tek doğru cevap bu
Yapay

harika bir araç. Ancak, AlexNet tarzında, Tensörlerin boyutlarının yanlışlıkla temsil edildiğini (genişlik ve yükseklik boyutları) fark ettim
FlySoFast


11

Keras-ardışık-ascii kullanarak ASCII görselleştirmeleri eklerdim (sorumluluk reddi: Ben yazarım).

CIFAR-10 için küçük bir ağ ( bu dersten ):

       OPERATION           DATA DIMENSIONS   WEIGHTS(N)   WEIGHTS(%)

           Input   #####     32   32    3
          Conv2D    \|/  -------------------       896     2.1%
            relu   #####     30   30   32
    MaxPooling2D   Y max -------------------         0     0.0%
                   #####     15   15   32
          Conv2D    \|/  -------------------     18496    43.6%
            relu   #####     13   13   64
    MaxPooling2D   Y max -------------------         0     0.0%
                   #####      6    6   64
         Flatten   ||||| -------------------         0     0.0%
                   #####        2304
           Dense   XXXXX -------------------     23050    54.3%
         softmax   #####          10

VGG16 için şöyle olurdu:

       OPERATION           DATA DIMENSIONS   WEIGHTS(N)   WEIGHTS(%)

          Input   #####      3  224  224
     InputLayer     |   -------------------         0     0.0%
                  #####      3  224  224
  Convolution2D    \|/  -------------------      1792     0.0%
           relu   #####     64  224  224
  Convolution2D    \|/  -------------------     36928     0.0%
           relu   #####     64  224  224
   MaxPooling2D   Y max -------------------         0     0.0%
                  #####     64  112  112
  Convolution2D    \|/  -------------------     73856     0.1%
           relu   #####    128  112  112
  Convolution2D    \|/  -------------------    147584     0.1%
           relu   #####    128  112  112
   MaxPooling2D   Y max -------------------         0     0.0%
                  #####    128   56   56
  Convolution2D    \|/  -------------------    295168     0.2%
           relu   #####    256   56   56
  Convolution2D    \|/  -------------------    590080     0.4%
           relu   #####    256   56   56
  Convolution2D    \|/  -------------------    590080     0.4%
           relu   #####    256   56   56
   MaxPooling2D   Y max -------------------         0     0.0%
                  #####    256   28   28
  Convolution2D    \|/  -------------------   1180160     0.9%
           relu   #####    512   28   28
  Convolution2D    \|/  -------------------   2359808     1.7%
           relu   #####    512   28   28
  Convolution2D    \|/  -------------------   2359808     1.7%
           relu   #####    512   28   28
   MaxPooling2D   Y max -------------------         0     0.0%
                  #####    512   14   14
  Convolution2D    \|/  -------------------   2359808     1.7%
           relu   #####    512   14   14
  Convolution2D    \|/  -------------------   2359808     1.7%
           relu   #####    512   14   14
  Convolution2D    \|/  -------------------   2359808     1.7%
           relu   #####    512   14   14
   MaxPooling2D   Y max -------------------         0     0.0%
                  #####    512    7    7
        Flatten   ||||| -------------------         0     0.0%
                  #####       25088
          Dense   XXXXX ------------------- 102764544    74.3%
           relu   #####        4096
          Dense   XXXXX -------------------  16781312    12.1%
           relu   #####        4096
          Dense   XXXXX -------------------   4097000     3.0%
        softmax   #####        1000

11

Netron adında açık kaynaklı bir proje var.

Netron, sinir ağı, derin öğrenme ve makine öğrenme modelleri için izleyicidir.

Netron ONNX (.onnx, .pb), Keras (.h5, .keras), CoreML (.mlmodel) ve TensorFlow Lite'ı (.tflite) destekler. Netron, Caffe (.caffemodel), Caffe2 (predict_net.pb), MXNet (-symbol.json), TensorFlow.js (model.json, .pb) ve TensorFlow (.pb, .meta) için deneysel desteğe sahiptir.

görüntü tanımını buraya girin



8

keras

Keras.utils.vis_utils modülü bir Keras modeli (kullanarak graphviz) çizmek için yardımcı fonksiyonları sağlar

Aşağıdaki, ilk gizli katmanın 50 nöron içerdiği ve 104 giriş değişkenini beklediği bir ağ modelini göstermektedir.

plot_model(model, to_file='model.png', show_shapes=True, show_layer_names=True)

görüntü tanımını buraya girin


LaTex uyumlu formatta kullanabilir miyim?
pushpen.paul

8

Python paketi conx, aşağıdaki net.picture()gibi SVG, PNG veya PIL Görüntüler üretme işleviyle etkinleştirme ile ağları görselleştirebilir :

görüntü tanımını buraya girin

Conx Keras üzerine inşa edilmiştir ve Keras'ın modellerinde okuyabilir. Her bankadaki renk haritası değiştirilebilir ve tüm banka türlerini gösterebilir.

Daha fazla bilgi bulunabilir: http://conx.readthedocs.io/en/latest/


6

Sürükle ve bırak sinir ağları görselleştiricisi (ve daha fazlası) üzerinde çalışıyorum. İşte LeNet benzeri bir mimari için görselleştirme örneği. LeNet benzeri bir mimarinin görselleştirilmesi Fan çıkışı ve fan girişi olan modeller de oldukça kolay bir şekilde modellenir. Web sitesini https://math.mit.edu/ennui/ adresinde ziyaret edebilirsiniz.


Tarayıcım çökmeye devam ettiğinde Treni Tren
datdinhquoc

1
Kontrol ettiğiniz için teşekkürler. Evet, bu hata henüz yeni ortaya çıktı ve Chrome'da WebGL’de yapılan son değişikliklerin bir sonucu olarak görünüyor. Her şey Firefox'ta çalışmalı. Daha fazlasını öğrendiğimde sizi güncelleyeceğim.
Jesse,

tks, görselleştiriciniz şaşırtıcı, oyun alanından daha iyi görünüyor :)
datdinhquoc

1
Teşekkür ederim! Sorunlarınız veya fikirleriniz varsa bana bildirin. Kod oluşturma gibi eğlenceli şeylerimiz de var!
Jesse

5

R'de, nnetbir arsa işleviyle gelmez, ancak bunun için kod burada sağlanır .

Alternatif olarak, neuralnetbir plot.neuralnetişlevi olan denilen daha yeni ve IMHO'nun daha iyi paketini kullanabilirsiniz, böylece sadece şunları yapabilirsiniz:

data(infert, package="datasets")
plot(neuralnet(case~parity+induced+spontaneous, infert))

sinir sisteminin

neuralnetçok daha eski olduğundan ve kullanılmaz nnetçünkü nnetr-cran ile birlikte gönderilir. Ancak neuralnet, Tensorflow gibi paketlerde bile bulunmayan esnek geri yayılma dahil, daha fazla eğitim algoritmasına sahip ve hiperparametre seçeneklerine çok daha dayanıklı ve genel olarak daha fazla özelliğe sahip.


NNet kodu için güncellenmiş bağlantıyı R beckmw.wordpress.com/2013/11/14/…
wacax

4

Yapay sinir ağlarının görselleştirilmesi konusunda bazı yeni alternatif çabalar var.

Lütfen şu makalelere bakın:

Çarpıcı 'AI beyin taramaları', makinelerin yeni beceriler öğrenirken gördüklerini ortaya koyuyor

Bir AI beyninin içinde - Makine öğrenimi neye benzer?

Bu yaklaşımlar sinir ağı operasyonunun görselleştirilmesine yöneliktir, ancak NN mimarisi de sonuçtaki diyagramlarda biraz görünür.

Örnekler:

görüntü tanımını buraya girin

görüntü tanımını buraya girin

görüntü tanımını buraya girin

görüntü tanımını buraya girin


21
Lütfen burada ne gördüğümüzü açıklayın. Güzel görünüyor, ama süslü görüntülerin ağın çalışmasını nasıl anlamayı desteklediğini anlamıyorum.
Martin Thoma

"Fantezi resimler" terimini aşağılayıcı kullanımından hoşlanmıyorum. @Martin
VividD

9
Sana saldırmak istemedim, ama sorumu cevaplamadan aşırı savunma cevabın kendisi için konuşuyor. - "Lego boxes" diyagramına "yorum" kısmını ekledim.
Martin Thoma

1
Bu arada: İkinci bağlantı öldü.
Martin Thoma

4
@MartinThoma Bu açıkça veri sanatıdır, veri kartı değildir ( lisacharlotterost.github.io/2015/12/19/… ).
Piotr Migdal

3

Kâğıtlar için oldukça elverişli değil, fakat sinir ağları hakkında çok fazla bilgisi olmayan insanlara topolojilerinin neye benzediğini göstermek için çok faydalıdır. Bu Javascript kütüphanesi (Neataptic) ağınızı görselleştirmenizi sağlar:

görüntü tanımını buraya girin


3

Evrimsel ağların görselleştirilmesini tartışan Derin Görselleştirme ile Yapay Sinir Ağlarını Anlama adlı popüler makaleyi okuyabilirsiniz . Uygulaması sadece her katmanı göstermekle kalmaz, aynı zamanda aktivasyonları, ağırlıkları, yankıları ve makalede derinlemesine tartışılan diğer birçok şeyi de gösterir. Kod içeride caffe'. İlginç olan, önceden eğitilmiş modeli kendinizinkine değiştirebilmenizdir.



Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.