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?
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?
Yanıtlar:
Sinir ağı bir Tensorflow grafiği olarak verilirse, bu grafiği TensorBoard ile görselleştirebilirsiniz .
MNIST CNN'nin görünüşü şöyle:
Kendinize ad / kapsam ("bırakma", "softmax", "fc1", "conv1", "conv2" gibi) ekleyebilirsiniz.
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.
Kısa bir süre önce NN mimarilerini çizmek ve NG-SVG denilen SVG'yi dışa aktarmak için bir araç geliştirdim
Caffe'de NetParameter protobuffer'ı çizmek için caffe / draw.py kullanabilirsiniz:
Matlab'da görünümü kullanabilirsiniz (net)
Keras.js :
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
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.
İşte yine bir başka yol - dotnets , Graphviz'i kullanarak , bu yazıdan yoğun bir şekilde Thiago G. Martins tarafından ilham alıyor .
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)
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 :
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/
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. 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.
R'de, nnet
bir arsa işleviyle gelmez, ancak bunun için kod burada sağlanır .
Alternatif olarak, neuralnet
bir plot.neuralnet
iş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))
neuralnet
çok daha eski olduğundan ve kullanılmaz nnet
çünkü nnet
r-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.
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:
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:
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.
Tensorspace-JS, ağ mimarisinin 3 boyutlu görselleştirilmesi için harika bir araçtır:
ve işte program yazma hakkında güzel bir yazı:
Netscope , Caffe modelleri için günlük bir araçtır.