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?
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?
Jawaban:
Jika jaringan saraf diberikan sebagai grafik Tensorflow, maka Anda dapat memvisualisasikan grafik ini dengan TensorBoard .
Beginilah MNN CNN terlihat seperti:
Anda dapat menambahkan nama / cakupan (seperti "dropout", "softmax", "fc1", "conv1", "conv2") sendiri.
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").
Baru-baru ini saya membuat alat untuk menggambar arsitektur NN dan mengekspor SVG, yang disebut NN-SVG
Di Caffe, Anda bisa menggunakan caffe / draw.py untuk menggambar protobuffer NetParameter:
Di Matlab, Anda dapat menggunakan tampilan (bersih)
Keras.js :
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
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).
Inilah cara lain - dotnets , menggunakan Graphviz , sangat terinspirasi oleh posting ini oleh Thiago G. Martins.
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)
Paket Python conx
dapat memvisualisasikan jaringan dengan aktivasi dengan fungsi net.picture()
untuk menghasilkan Gambar SVG, PNG, atau PIL seperti ini:
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/
Saya telah bekerja pada visualisator jaringan saraf drag-and-drop (dan banyak lagi). Berikut adalah contoh visualisasi untuk 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/
Dalam R, nnet
tidak 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.neuralnet
fungsi, jadi Anda bisa melakukan:
data(infert, package="datasets")
plot(neuralnet(case~parity+induced+spontaneous, infert))
neuralnet
tidak digunakan sebanyak nnet
karena nnet
jauh 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.
Ada beberapa upaya alternatif baru pada visualisasi jaringan saraf.
Silakan lihat artikel ini:
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:
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:
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.
Tensorspace-JS adalah alat yang fantastis untuk visualisasi 3d arsitektur jaringan:
dan di sini ada posting yang bagus tentang cara menulis program:
Netscope adalah alat sehari-hari saya untuk model Caffe.