Bagaimana Anda memvisualisasikan arsitektur jaringan saraf?


80

Ketika menulis makalah / membuat presentasi tentang topik yang membahas tentang jaringan saraf, orang biasanya memvisualisasikan arsitektur jaringan.

Apa cara yang baik / sederhana untuk memvisualisasikan arsitektur umum secara otomatis?




1
Saya menulis diagram sederhana jaringan saraf yang berbelit-belit dengan survei pendekatan visualisasi pembelajaran yang mendalam (baik manual maupun otomatis). Saya mendapat banyak inspirasi, dan tautan, dari utas ini - thx!
Piotr Migdal

Jawaban:


25

Tensorflow, Keras, MXNet, PyTorch

Jika jaringan saraf diberikan sebagai grafik Tensorflow, maka Anda dapat memvisualisasikan grafik ini dengan TensorBoard .

Beginilah MNN CNN terlihat seperti:

masukkan deskripsi gambar di sini

Anda dapat menambahkan nama / cakupan (seperti "dropout", "softmax", "fc1", "conv1", "conv2") sendiri.

Interpretasi

Berikut ini hanya tentang grafik kiri. Saya mengabaikan 4 grafik kecil di sebelah kanan.

Setiap kotak adalah lapisan dengan parameter yang bisa dipelajari. Untuk kesimpulan, informasi mengalir dari bawah ke atas. Elips adalah lapisan yang tidak mengandung parameter yang dipelajari.

Warna kotak tidak memiliki arti.

Saya tidak yakin dengan nilai kotak kecil putus-putus ("gradien", "Adam", "save").


itu bagus, saya mencoba untuk menghindari nama seperti conv1, dll conv2, saya ingin membuat semua nama conv nanti sebagai CONV, Bagaimana saya akan lakukan ??
Sudip Das

+1. Ini bukan hanya untuk TF: MXNet dan Pytorch juga memiliki beberapa dukungan
Jakub Bartczuk

@SudipDas Anda dapat menambahkan nama dalam kode ke lapisan, yang akan muncul saat Anda merencanakannya.
Ben

Bagaimana saya akan menunjukkan nama setiap lapisan sebagai "CONV", jika saya menuliskannya sebagai "CONV" dari setiap lapisan maka saya akan mendapatkan kesalahan, karena setiap lapisan harus memiliki nama yang unik seperti aturan, tetapi saya ingin tahu, apakah adakah cara lain untuk mengatasi masalah ini ?? @ Ben
Sudip Das

1
@tidak, saya memperbaiki tautan
Martin Thoma

23

Baru-baru ini saya membuat alat untuk menggambar arsitektur NN dan mengekspor SVG, yang disebut NN-SVG

masukkan deskripsi gambar di sini


1
Unduh SVG tidak berfungsi
gambar

bekerja untuk saya 1/23/19. Jika Anda masih memiliki masalah, jangan ragu untuk membuka masalah.
Alex Lenail

1
ini adalah satu-satunya jawaban yang tepat
Artifisial

alat yang luar biasa. Namun, saya perhatikan bahwa dalam gaya AlexNet, dimensi Tensor keliru diwakili (dimensi lebar dan tinggi)
FlySoFast


11

Saya akan menambahkan visualisasi ASCII menggunakan keras-sequential-ascii (disclaimer: I am the author).

Jaringan kecil untuk CIFAR-10 (dari tutorial ini ) adalah:

       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

Untuk VGG16 akan menjadi:

       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

Ada proyek sumber terbuka yang disebut Netron

Netron adalah penampil untuk jaringan saraf, pembelajaran mendalam dan model pembelajaran mesin.

Netron mendukung ONNX (.onnx, .pb), Keras (.h5, .keras), CoreML (.mlmodel) dan TensorFlow Lite (.tflite). Netron memiliki dukungan eksperimental untuk Caffe (.caffemodel), Caffe2 (predict_net.pb), MXNet (-symbol.json), TensorFlow.js (model.json, .pb) dan TensorFlow (.pb, .meta).

masukkan deskripsi gambar di sini



8

Keras

The keras.utils.vis_utils modul menyediakan fungsi utilitas untuk merencanakan model Keras (menggunakan graphviz)

Berikut ini menunjukkan model jaringan bahwa lapisan tersembunyi pertama memiliki 50 neuron dan mengharapkan 104 variabel input.

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

masukkan deskripsi gambar di sini


Bisakah saya menggunakannya dalam format yang kompatibel dengan LaTex?
pushpen.paul

8

Paket Python conxdapat memvisualisasikan jaringan dengan aktivasi dengan fungsi net.picture()untuk menghasilkan Gambar SVG, PNG, atau PIL seperti ini:

masukkan deskripsi gambar di sini

Conx dibangun di atas Keras, dan dapat membaca dalam model Keras. Colormap di setiap bank dapat diubah, dan itu dapat menunjukkan semua jenis bank.

Informasi lebih lanjut dapat ditemukan di: http://conx.readthedocs.io/en/latest/


6

Saya telah bekerja pada visualisator jaringan saraf drag-and-drop (dan banyak lagi). Berikut adalah contoh visualisasi untuk arsitektur seperti LeNet. Visualisasi arsitektur seperti LeNet Model dengan fan-out dan fan-in juga cukup mudah dimodelkan. Anda dapat mengunjungi situs web di https://math.mit.edu/ennui/


browser saya terus
macet

1
Terima kasih sudah memeriksanya. Ya, bug ini baru saja muncul dan sepertinya merupakan hasil dari beberapa perubahan terbaru pada WebGL di Chrome. Semuanya harus bekerja di Firefox. Saya akan memperbarui Anda ketika saya tahu lebih banyak.
Jesse

tks, visualiser Anda luar biasa, terlihat lebih besar daripada taman bermain :)
datdinhquoc

1
Terima kasih! Beri tahu saya jika Anda memiliki masalah atau ide. Kami memiliki hal-hal menyenangkan seperti pembuatan kode juga!
Jesse

5

Dalam R, nnettidak datang dengan fungsi plot, tetapi kode untuk itu disediakan di sini .

Atau, Anda dapat menggunakan paket yang lebih baru dan IMHO lebih baik yang disebut neuralnet yang memiliki plot.neuralnetfungsi, jadi Anda bisa melakukan:

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

neuralnet

neuralnettidak digunakan sebanyak nnetkarena nnetjauh lebih tua dan dikirimkan bersama r-cran. Tapineuralnet memiliki lebih banyak algoritma pelatihan, termasuk backpropagation tangguh yang kurang bahkan dalam paket seperti Tensorflow, dan jauh lebih kuat untuk pilihan hyperparameter, dan memiliki lebih banyak fitur secara keseluruhan.


Anda harus menambahkan tautan yang diperbarui untuk kode NNet di R beckmw.wordpress.com/2013/11/14/…
wacax

4

Ada beberapa upaya alternatif baru pada visualisasi jaringan saraf.

Silakan lihat artikel ini:

'Pemindaian otak AI' yang menakjubkan mengungkapkan apa yang dilihat mesin saat mereka mempelajari keterampilan baru

Di dalam 'otak' AI - seperti apa pembelajaran mesin?

Pendekatan ini lebih berorientasi pada memvisualisasikan operasi jaringan saraf, namun, arsitektur NN juga agak terlihat pada diagram yang dihasilkan.

Contoh:

masukkan deskripsi gambar di sini

masukkan deskripsi gambar di sini

masukkan deskripsi gambar di sini

masukkan deskripsi gambar di sini


21
Tolong jelaskan apa yang kita lihat di sini. Itu terlihat indah, tapi saya tidak mengerti bagaimana gambar-gambar mewah mendukung pemahaman operasi jaringan.
Martin Thoma

Saya tidak suka penggunaan istilah "gambar mewah" yang merendahkan Anda. @ Martin
VividD

9
Saya tidak bermaksud menyerang Anda, tetapi jawaban Anda yang terlalu defensif tanpa benar-benar menjawab pertanyaan saya berbicara dengan sendirinya. - Saya menambahkan bagian "interpretasi" ke diagram "kotak lego".
Martin Thoma

1
Omong-omong: Tautan kedua sudah mati.
Martin Thoma

4
@ MartinThoma Ini jelas data seni, bukan data yaitu (vide lisacharlotterost.github.io/2015/12/12/19/... ).
Piotr Migdal

3

Tidak hanya untuk kertas, tetapi sangat berguna untuk menunjukkan kepada orang-orang yang tidak tahu banyak tentang jaringan saraf seperti apa topologi mereka. Pustaka Javascript ini (Neataptic) memungkinkan Anda memvisualisasikan jaringan Anda:

masukkan deskripsi gambar di sini


3

Anda dapat membaca makalah populer Understanding Neural Networks Through Deep Visualization yang membahas visualisasi jaring konvolusional. Implementasinya tidak hanya menampilkan setiap lapisan tetapi juga menggambarkan aktivasi, bobot, dekonvolusi, dan banyak hal lain yang dibahas secara mendalam di koran. Kode itu ada di caffe'. Bagian yang menarik adalah Anda dapat mengganti model yang sudah dilatih sebelumnya dengan model Anda sendiri.



Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.