Cara Memvisualisasikan Arsitektur Neural Network dengan Python

Panduan singkat untuk membuat representasi diagram Jaringan Neural Anda menggunakan Jupyter atau Google Colab

Kredit Gambar โ€” Dikembangkan oleh penulis menggunakan visualkeras dan Jupyter Notebook.

Seringkali saat bekerja dengan Jaringan Syaraf Tiruan atau variasi lain seperti Jaringan Syaraf Konvolusi atau Jaringan Syaraf Berulang, kami ingin memvisualisasikan dan membuat representasi diagram dari model yang kami kompilasi. Ini dapat menyelesaikan dua tujuan:

  1. Mendefinisikan dan melatih beberapa model memungkinkan kita memvisualisasikan kedalaman model dan membandingkan berbagai lapisan serta cara penyusunannya secara berurutan.
  2. Memungkinkan pemahaman yang lebih baik tentang struktur model, fungsi aktivasi yang digunakan di setiap lapisan, bentuk setiap lapisan (jumlah neuron), dan parameter yang perlu dilatih

Ada beberapa paket yang tersedia dengan python yang dapat membuat representasi visual Model Jaringan Syaraf Tiruan kami. Tiga paket pertama dapat digunakan bahkan sebelum model dilatih (model hanya perlu didefinisikan dan dikompilasi); namun, Tensor Board mengharuskan pengguna untuk melatih model pada data yang akurat sebelum arsitektur dapat divisualisasikan.

  1. Visualisasi ANN
  2. Keras Visual
  3. Plot Model Keras
  4. Papan Tensor
pip instal visualkeraspip instal ann_visualizerpip instal graphviz

Kita tidak perlu menginstal โ€œTensor Boardโ€ dan โ€œKeras Model Plotโ€ secara terpisah. Ini akan terjadi dengan instalasi awal Tensorflow & Keras.

Kami hanya dapat memanfaatkan beberapa perpustakaan yang tercantum di bawah ini. Sebagian besar perpustakaan dapat mengonversi model TensorFlow menjadi diagram tanpa melatihnya secara eksplisit pada data. Anda dapat menganggap ini sebagai satu-satunya sumber kebenaran. Beberapa perpustakaan, seperti Pandas, Skimage, dan OpenCV, akan berguna saat membaca data atau gambar terstruktur.

# Impor perpustakaan yang diperlukanimpor panda sebagai pdimpor numpy sebagai np # Impor numpydari data impor skimage, io # Impor perpustakaan skimage (data - Gambar uji dan data contoh.# io - Membaca, menyimpan, dan menampilkan gambar.)dari skimage.color impor rgb2grayimport matplotlib.pyplot as plt # Impor matplotlib.pyplot (Kerangka plot dengan Python.)%matplotlib sebarisimport os # Modul ini menyediakan cara portabel untuk menggunakan fungsionalitas yang bergantung pada sistem operasi.os.lingkungan['TF_CPP_MIN_LOG_LEVEL'] = '3'peringatan impor# Menekan peringatanwarnings.filterwarnings('abaikan')dari tampilan impor IPython.displayimpor cv2 sebagai cv
dari sklearn.metrics impor kebingungan_matrix
dari sklearn.model_selection import train_test_splitdari utilitas impor tensorflow.kerasdari tensorflow.keras.models import Sequential,load_modeldari tensorflow.keras.layers impor Padat, Dropout, Flatten, Conv2D, MaxPool2D, BatchNormalizationdari tensorflow.keras.optimizers impor Adamimpor tensorflow sebagai tfimpor seaborn sebagai sns

Beberapa tautan bermanfaat untuk menjelajahi lebih banyak konten seputar ANN & CNN dari awal.

Kami akan mendefinisikan tiga model CNN berbeda dengan hyperparameter berbeda. Idealnya, di dunia nyata, kami bertujuan menerapkan arsitektur yang berbeda untuk memaksimalkan akurasi atau metrik apa pun yang relevan, mengingat kami sedang membangun model untuk tugas klasifikasi multi-kategori. Pilihan jenis masalah kita tidak akan berdampak apa pun pada cara menggunakan paket visualisasi.

Kami membuat fungsi yang ditentukan pengguna untuk membangun tiga model berbeda secara terpisah dengan jumlah lapisan CNN, pengumpulan maksimal, dan lapisan padat yang berbeda.

4.1 โ€“ Arsitektur 1 โ€” Lapisan CNN dangkal + lapisan ANN

def konstruk_model():model = Berurutan()model.add(Conv2D(filter=64, kernel_size=(3, 3), input_shape=(128, 128, 1), activation='relu'))model.add(Conv2D(filter=64, kernel_size=(3, 3), activation='relu'))model.tambahkan(MaxPool2D((2, 2)))model.tambahkan(Ratakan())model.add(Padat(256, aktivasi='relu'))model.add(Padat(12, aktivasi='softmax'))model.kompilasi(kerugian='categorical_crossentropy', pengoptimal='adam', metrics=['akurasi'])model kembali

4.2 โ€” Arsitektur 2 โ€” Lapisan CNN Dalam + ANN Dangkal

def sconstruct_model():model = Berurutan()smodel.add(Conv2D(filter=64, kernel_size=(3, 3), input_shape=(128, 128, 3), activation='relu'))smodel.add(Conv2D(filter=64, kernel_size=(3, 3), activation='relu'))smodel.tambahkan(MaxPool2D((2, 2)))smodel.add(Conv2D(filter=128, kernel_size=(3, 3), activation='relu'))smodel.add(Conv2D(filter=128, kernel_size=(3, 3), activation='relu'))smodel.tambahkan(MaxPool2D((2, 2)))smodel.add(Conv2D(filter=128, kernel_size=(3, 3), activation='relu'))smodel.add(Conv2D(filter=128, kernel_size=(3, 3), activation='relu'))smodel.tambahkan(MaxPool2D((2, 2)))smodel.tambahkan(Ratakan())smodel.add(Padat(256, aktivasi='relu'))smodel.add(Padat(12, aktivasi='softmax'))#pengoptimal = Adam(lr=0.001)smodel.kompilasi(loss='categorical_crossentropy', pengoptimal='adam', metrics=['akurasi'])#model.ringkasan()kembali model

4.3 โ€” Arsitektur 3 โ€” Lapisan CNN & ANN Dalam

def cconstruct_model(tingkat pembelajaran):model = Berurutan()smodel.add(Conv2D(filter=32, kernel_size=(3, 3), input_shape=(128, 128, 1), activation='relu'))smodel.add(Conv2D(filter=32, kernel_size=(3, 3), activation='relu'))smodel.tambahkan(MaxPool2D((2, 2)))smodel.add(Conv2D(filter=64, kernel_size=(3, 3), activation='relu'))smodel.add(Conv2D(filter=64, kernel_size=(3, 3), activation='relu'))smodel.tambahkan(MaxPool2D((2, 2)))smodel.add(Conv2D(filter=128, kernel_size=(3, 3), activation='relu'))smodel.add(Conv2D(filter=128, kernel_size=(3, 3), activation='relu'))smodel.tambahkan(MaxPool2D((2, 2)))smodel.tambahkan(Ratakan())smodel.add(Padat(256, aktivasi='relu'))smodel.add(Padat(256, aktivasi='relu'))smodel.add(Padat(12, aktivasi='softmax'))pengoptimal = Adam(lr=learningRate)smodel.kompilasi(loss='categorical_crossentropy', pengoptimal=pengoptimal, metrik=['akurasi'])smodel.ringkasan()kembali modelmodel=cconstruct_model(0.001)

Modul Python bernama ANN Visualizer memungkinkan untuk memvisualisasikan jaringan saraf tiruan dengan beberapa baris kode (Gheorghiu, 2022). Ia menggunakan modul Graphviz Keras dan Python untuk menghasilkan grafik jaringan saraf yang rapi dan menarik. Anda memiliki fleksibilitas untuk memvisualisasikan keseluruhan Deep Learning Network atau hanya Convolutional Neural Network yang Anda buat didorong oleh kemajuan dalam deep learning (Shah, 2018).

Gunakan struktur berikut di bawah ini untuk menghasilkan representasi pdf dari jaringan saraf Anda. Namun sebelumnya kita perlu mengkompilasi model di atas.

model=konstruksi_model()

ann_viz(model, view=True, nama file=โ€network.gvโ€, title=โ€Jaringan Neural Sayaโ€)

  • model - Model Sekuensial dari Keras
  • melihat - Visualisasikan grafik setelah ann_viz() dipanggil
  • nama file - Nama file
  • judul - Judul spesifik apa pun untuk menunjukkan grafik
dari ann_visualizer.visualisasikan impor ann_vizann_viz(model, view=True, filename=โ€cconstruct_modelโ€, title=โ€CNN โ€” Model 1 โ€” Arsitektur Sederhanaโ€)
Gambar 1: Cuplikan konstruk_model() yang dibuat menggunakan ANN Visualizer. Kredit โ€” Gambar dikembangkan oleh penulis menggunakan Jupyter Notebook. keluaran aslinya terlalu besar untuk muat di sini sebagai gambar, oleh karena itu cuplikan lapisan bawah digunakan di sini.

Alat Python yang disebut Visualkeras memudahkan untuk melihat desain jaringan saraf Keras (baik secara terpisah atau sebagai bagian dari TensorFlow). Mayoritas kebutuhan penataan rambut dapat dipenuhi dengan mudah. Jaringan saraf konvolusional (CNN) mendapat manfaat signifikan dari pengembangan arsitektur bergaya berlapis. Sebagian besar model, termasuk jaringan feed-forward sederhana, mendapat manfaat besar dari pembuatan arsitektur bergaya grafik, yang didukung modul ini (Gavrikov, 2022).

model1=konstruksi_model()model2=konstruksi_model()model3=cconstruct_model(0.009)impor visualkerasdari PIL impor ImageFontvisualkeras.layered_view(model1, legenda=Benar)visualkeras.layered_view(model2, legenda=Benar)visualkeras.layered_view(model3, legenda=Benar)
Gambar 2. Mengilustrasikan representasi diagram dari tiga arsitektur model yang berbeda. Kredit โ€” Gambar dikembangkan oleh penulis menggunakan Jupyter Notebook.

Grafik keras.utils.plot_model menyediakan fungsi bawaan untuk memplot model yang ditentukan dan dikompilasi melalui Keras menggunakan paket Graphviz dan pydot. Secara grafis, ini kurang intuitif dibandingkan paket yang digunakan di atas, tetapi ini menguraikan arsitektur dasar model sekuensial (Team, nd).

tf.keras.utils.plot_model(model1,to_file="model.png",show_shapes=Benar,show_dtype=Salah,show_layer_names=Benar,rankdir="TB",expand_nested=Benar,dpi=96,layer_range=Tidak ada,show_layer_activations=Benar,)

Beberapa hyperparameter yang perlu dipertimbangkan:

  1. model: Sebuah instance dari model atau objek model yang dikompilasi Keras
  2. ke_file: Nama File gambar
  3. tampilkan_bentuk: menampilkan dimensi dan bentuk setiap lapisan di jaringan saraf
  4. tampilkan_lapisan_aktivasi: menampilkan fungsi aktivasi yang digunakan dalam Neuron
Gambar 3. Mengilustrasikan output dari tf.keras.utils.plot_model(). Kredit โ€” Gambar dikembangkan oleh penulis menggunakan Jupyter Notebook.

TensorBoard adalah antarmuka dasbor yang memungkinkan pengguna memvisualisasikan log di berbagai model yang dijalankan. Log dapat berkisar dari melacak ukuran validasi model apa pun seperti akurasi, perolehan, RMSE, MAPE, dan MSE di berbagai zaman hingga membuat grafik konseptual arsitektur model. Ini adalah alat yang ampuh untuk memvisualisasikan apakah model yang diinginkan cocok dengan desain yang diharapkan sekaligus memberikan wawasan tentang bagaimana model dapat diubah menggunakan grafik tingkat operasi.

Untuk memanfaatkan fungsi ini kita perlu memuat TensorBoard terlebih dahulu lalu membuat direktori log.

%load_ext papan tensordari datetime impor datetimedari tensorflow import keras# Tentukan panggilan balik Keras TensorBoard.logdir="logs/fit/" + datetime.now().strftime("%Y%m%d-%H%M%S")tensorboard_callback = keras.callbacks.TensorBoard(log_dir=logdir)

Buat callback Keras TensorBoard dan tentukan direktori log sebelum pelatihan. Anda dapat memastikan bahwa data grafik dicatat untuk visualisasi TensorBoard dengan menyediakan callback ini ke model.fit(). Setelah Anda memanggil TensorBoard, mungkin diperlukan waktu beberapa menit untuk memuatnya.

model.fit(X2_kereta, Y2_kereta,batch_ukuran=64,zaman = 5,panggilan balik=[tensorboard_callback])

Catatan: X2_train dan Y2_train adalah kumpulan data pelatihan yang tidak tercermin dalam kode di atas. Anda dapat menggantinya dengan data pelatihan Anda sendiri.

TensorBoard selalu menampilkan grafik tingkat operasi secara default. (Tag โ€œDefaultโ€ disorot di sebelah kiri.) Grafiknya terbalik dibandingkan dengan kode karena data mengalir dari bawah ke atas. Namun seperti yang Anda lihat, grafiknya secara kasar menyerupai deskripsi model Keras, dengan tepi tambahan yang mengarah ke node komputasi lainnya (Tensorflow, 2022).

Gambar 4. Mengilustrasikan keluaran TensorBoard. Kredit โ€” Gambar dikembangkan oleh penulis menggunakan Jupyter Notebook.

Konteks selengkapnya tentang cara menggunakan TensorBoard dapat ditemukan di Referensi.

Dari sudut pandang komersial, ketika pengguna harus menyajikan analisis mereka kepada sekelompok pemangku kepentingan, diagram ini menambah kompleksitas diskusi. Mereka mungkin bukan merupakan nilai tambah yang ekstrem. Namun, dari sudut pandang akademis dan pembelajaran, ada manfaatnya memanfaatkan paket-paket ini untuk menampilkan arsitektur pembelajaran mendalam ini. Bagi saya, visualisator ANN menonjol dibandingkan yang lain karena diagramnya mudah dicerna, sedangkan keluaran grafik TensorBoard memerlukan lebih banyak teknis sebelum hasilnya dapat digunakan.

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

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

Syah, A. (2018, 28 April). Memvisualisasikan Jaringan Syaraf Tiruan (JST) hanya dengan Satu Baris Kode. Sedang. https://towardsdatascience.com/visualizing-artificial-neural-networks-anns-with-just-one-line-of-code-b4233607209e

Tumpukan Melimpah. (nd). pembelajaran mesin โ€” Bagaimana Anda memvisualisasikan arsitektur jaringan saraf? Pertukaran Tumpukan Ilmu Data. Diakses pada 29 Oktober 2022, dari https://datascience.stackexchange.com/questions/12851/how-do-you-visualize-neural-network-architectures

Tim, K. (nd). Dokumentasi Keras: Utilitas plot model. Keras.io. Diakses pada 29 Oktober 2022, dari https://keras.io/api/utils/model_plotting_utils/#modeltodot-function

Aliran Tensor. (2022, 6 Januari). Memeriksa Grafik TensorFlow | Papan Tensor. Aliran Tensor. https://www.tensorflow.org/tensorboard/graphs

Cara Memvisualisasikan Arsitektur Jaringan Neural dengan Python Diterbitkan Ulang dari Sumber https://towardsdatascience.com/how-to-visualize-neural-network-architectures-in-python-567cd2aa6d62?source=rssโ€”-7f60cf5620c9โ€”4 melalui https:// menujudatascience.com/feed

<!โ€“

->

Stempel Waktu:

Lebih dari Konsultan Blockchain