Python'da Sinir Ağı Mimarileri Nasıl Görselleştirilir

Jupyter veya Google Colab'ı kullanarak Sinir Ağlarınızın diyagramatik temsilini oluşturmaya yönelik hızlı bir kılavuz

Image Credit — Yazar tarafından görsel keras ve Jupyter Notebook kullanılarak geliştirilmiştir.

Genellikle Yapay Sinir Ağları veya Evrişim Sinir Ağları veya Tekrarlayan Sinir Ağları gibi diğer varyasyonlarla çalışırken, derlenmiş modelimizin diyagramatik bir temsilini görselleştirmek ve oluşturmak isteriz. Bu iki amacı çözebilir:

  1. Birden fazla modeli tanımlamak ve eğitmek, modelimizin derinliğini görselleştirmemize ve farklı katmanları ve bunların sırayla nasıl yerleştirildiğini karşılaştırmamıza olanak tanır.
  2. Model yapısının, her katmanda kullanılan aktivasyon fonksiyonlarının, her katmanın şeklinin (nöron sayısı) ve eğitilmesi gereken parametrelerin daha iyi anlaşılmasını sağlar

Python'da Sinir Ağı Modellerimizin görsel bir temsilini oluşturabilen birkaç paket mevcuttur. İlk üç paket, model eğitilmeden önce bile kullanılabilir (modelin yalnızca tanımlanması ve derlenmesi gerekir); ancak Tensör Kartları, mimarinin görselleştirilmesinden önce kullanıcının modeli doğru verilerle eğitmesini gerektirir.

  1. YSA Görüntüleyici
  2. Görsel Keralar
  3. Keras Model Grafiği
  4. Tensör Kartı
pip kurulum görselleripip kurulumu ann_visualizerpip kurulumu graphviz

“Tensor Board” ve “Keras Model Plot”u ayrı ayrı kurmamıza gerek yok. Bu, Tensorflow & Keras'ın ilk kurulumuyla birlikte gelecektir.

Aşağıda listelenen kütüphanelerden yalnızca birkaçını kullanabiliriz. Çoğu kitaplık, bir TensorFlow modelini veriler üzerinde açıkça eğitmeden bir diyagrama dönüştürebilir. Bunu gerçeğin tek kaynağı olarak düşünebilirsiniz. Pandas, Skimage ve OpenCV gibi bazı kütüphaneler, yapılandırılmış veri veya görselleri okurken kullanışlı olacaktır.

# Gerekli kütüphaneleri içe aktarınpandaları pd olarak içe aktarnumpy'yi np olarak içe aktar # Numpy'yi içe aktarskimage içe aktarma verilerinden, io # Skimage kitaplığını içe aktarın (veri - Görüntüleri ve örnek verileri test edin.# io - Görüntüleri okuma, kaydetme ve görüntüleme.)skimage.color'dan rgb2gray'i içe aktarınmatplotlib.pyplot'u plt olarak içe aktar # Matplotlib.pyplot'u içe aktar (Python'da çizim çerçevesi.)%matplotlib satır içiimport os # Bu modül, işletim sistemine bağlı işlevselliği kullanmanın taşınabilir bir yolunu sağlar.os.environ['TF_CPP_MIN_LOG_LEVEL'] = '3'ithalat uyarıları# Uyarıları bastırwarnings.filterwarnings('yoksay')IPython.display içe aktarma ekranındancv2'yi cv olarak içe aktar
sklearn.metrics'ten karışıklığı_matrix'i içe aktarın
sklearn.model_selection'dan import train_test_splittensorflow.keras içe aktarma araçlarındantensorflow.keras.models'den Sıralı,load_model'i içe aktarıntensorflow.keras.layers'dan Yoğun, Bırakma, Düzleştirme, Conv2D, MaxPool2D, BatchNormalization'ı içe aktarıntensorflow.keras.optimizer'dan Adam'ı içe aktarıntensorflow'u tf olarak içe aktarseaborn'u sns olarak ithal etmek

YSA'lar ve CNN'ler hakkında daha fazla içeriği sıfırdan keşfetmek için bazı yararlı bağlantılar.

Farklı hiperparametrelerle üç farklı CNN modeli tanımlayacağız. İdeal olarak, gerçek dünyada, çok kategorili bir sınıflandırma görevi için model oluşturduğumuzu göz önünde bulundurarak doğruluğu veya ilgili ölçümleri en üst düzeye çıkarmak için farklı mimariler uygulamayı hedefliyoruz. Sorun türü seçimimizin görselleştirme paketlerinin nasıl kullanılacağı üzerinde hiçbir etkisi olmayacaktır.

Farklı sayıda CNN katmanı, maksimum havuzlama ve yoğun katmanlarla ayrı ayrı üç farklı model oluşturmak için kullanıcı tanımlı işlevler oluşturduk.

4.1 – Mimari 1 – Sığ CNN katmanları + ANN katmanları

def build_model():model = Sıralı()model.add(Conv2D(filtreler=64, kernel_size=(3, 3), input_shape=(128, 128, 1), aktivasyon='relu'))model.add(Conv2D(filtreler=64, kernel_size=(3, 3), aktivasyon='relu'))model.add(MaxPool2D((2, 2)))model.add(Düzleştir())model.add(Yoğun(256, aktivasyon='relu'))model.add(Dense(12, aktivasyon='softmax'))model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])dönüş modeli

4.2 — Mimari 2 — Derin CNN + Sığ ANN Katmanları

def sconstruct_model():smodel = Sıralı()smodel.add(Conv2D(filtreler=64, kernel_size=(3, 3), input_shape=(128, 128, 3), aktivasyon='relu'))smodel.add(Conv2D(filtreler=64, kernel_size=(3, 3), aktivasyon='relu'))smodel.add(MaxPool2D((2, 2)))smodel.add(Conv2D(filtreler=128, kernel_size=(3, 3), aktivasyon='relu'))smodel.add(Conv2D(filtreler=128, kernel_size=(3, 3), aktivasyon='relu'))smodel.add(MaxPool2D((2, 2)))smodel.add(Conv2D(filtreler=128, kernel_size=(3, 3), aktivasyon='relu'))smodel.add(Conv2D(filtreler=128, kernel_size=(3, 3), aktivasyon='relu'))smodel.add(MaxPool2D((2, 2)))smodel.add(Düzleştir())smodel.add(Yoğun(256, aktivasyon='relu'))smodel.add(Dense(12, aktivasyon='softmax'))#iyileştirici = Adam(lr=0.001)smodel.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])#model.özet()dönüş modeli

4.3 — Mimari 3 — Derin CNN ve ANN Katmanları

def cconstruct_model(learningRate):smodel = Sıralı()smodel.add(Conv2D(filtreler=32, kernel_size=(3, 3), input_shape=(128, 128, 1), aktivasyon='relu'))smodel.add(Conv2D(filtreler=32, kernel_size=(3, 3), aktivasyon='relu'))smodel.add(MaxPool2D((2, 2)))smodel.add(Conv2D(filtreler=64, kernel_size=(3, 3), aktivasyon='relu'))smodel.add(Conv2D(filtreler=64, kernel_size=(3, 3), aktivasyon='relu'))smodel.add(MaxPool2D((2, 2)))smodel.add(Conv2D(filtreler=128, kernel_size=(3, 3), aktivasyon='relu'))smodel.add(Conv2D(filtreler=128, kernel_size=(3, 3), aktivasyon='relu'))smodel.add(MaxPool2D((2, 2)))smodel.add(Düzleştir())smodel.add(Yoğun(256, aktivasyon='relu'))smodel.add(Yoğun(256, aktivasyon='relu'))smodel.add(Dense(12, aktivasyon='softmax'))optimize edici = Adam(lr=learningRate)smodel.compile(loss='categorical_crossentropy', optimizer=optimizer, metrics=['accuracy'])smodel.summary()dönüş modelimodel=construct_model(0.001)

ANN Visualizer adlı Python modülü, bir yapay sinir ağının birkaç satır kodla görselleştirilmesini mümkün kılmaktadır (Gheorghiu, 2022). Düzenli ve çekici bir sinir ağı grafiği oluşturmak için Keras ve Python'un Graphviz modülünü kullanır. Derin Öğrenme Ağının tamamını veya yalnızca derin öğrenmedeki ilerlemelere dayanarak oluşturduğunuz Evrişimli Sinir Ağını görselleştirme esnekliğine sahipsiniz (Shah, 2018).

Sinir ağınızın pdf temsilini oluşturmak için aşağıdaki yapıyı kullanın. Ancak bundan önce yukarıdaki modelleri derlememiz gerekiyor.

model=construct_model()

ann_viz(model, view=True, filename=”network.gv”, title=”Sinir Ağım”)

  • modeli — Keras'tan Sıralı Model
  • görüş - Ann_viz() çağrıldıktan sonra grafiği görselleştirin
  • dosya adı - Dosyanın adı
  • başlık - Grafiği belirtmek için herhangi bir özel başlık
ann_visualizer.visualize'den ann_viz'i içe aktarınann_viz(model, view=True, filename=”cconstruct_model”, title=”CNN — Model 1 — Basit Mimari”)
Şekil 1: ANN Görselleştirici kullanılarak oluşturulan build_model()'in anlık görüntüsü. Kredi - Yazar tarafından Jupyter Notebook kullanılarak geliştirilen resim. orijinal çıktı buraya görüntü olarak sığmayacak kadar büyük olduğundan burada alt katmanların anlık görüntüsü kullanılmıştır.

Visualkeras adı verilen bir Python aracı, Keras sinir ağı tasarımlarını (ayrı ayrı veya TensorFlow'un bir parçası olarak) görmeyi kolaylaştırır. Stil ihtiyaçlarının çoğu kolaylıkla karşılanabilir. Evrişimsel sinir ağları (CNN'ler), katmanlı stilde mimarilerin geliştirilmesinden önemli ölçüde yararlanır. Basit ileri beslemeli ağlar da dahil olmak üzere çoğu model, bu modülün desteklediği grafik tarzı mimarinin oluşturulmasından büyük ölçüde yararlanır (Gavrikov, 2022).

model1=yapı_model()model2=yapı_model()model3=construct_model(0.009)görsel keraları içe aktarPIL'den ImageFont'u içe aktarıngörselkeras.layered_view(model1, açıklama=Doğru)görselkeras.layered_view(model2, açıklama=Doğru)görselkeras.layered_view(model3, açıklama=Doğru)
Şekil 2. Üç farklı model mimarisinin şematik gösterimini göstermektedir. Kredi - Yazar tarafından Jupyter Notebook kullanılarak geliştirilen resim.

The keras.utils.plot_model Graphviz ve pydot paketlerini kullanarak Keras aracılığıyla tanımlanan ve derlenen bir modeli çizmek için yerleşik işlevler sağlar. Grafiksel olarak yukarıda kullanılan paketlere göre daha az sezgiseldir ancak sıralı bir modelin (Takım, nd) temel mimarisini özetlemektedir.

tf.keras.utils.plot_model(model1,to_file = "model.png",show_shapes=Doğru,show_dtype=Yanlış,show_layer_names=Doğru,rütbedir = "TB",extend_nested=Doğru,dpi=96,Layer_range=Yok,show_layer_activations=Doğru,)

Dikkate alınması gereken birkaç hiper parametre:

  1. Model: Keras'ın derlenmiş modelinin veya model nesnesinin bir örneği
  2. dosyalamak: Resmin Dosya Adı
  3. show_shapes: sinir ağındaki her katmanın boyutunu ve şeklini gösterir
  4. show_layer_activation: Nöronlarda kullanılan aktivasyon fonksiyonlarını görüntüler
Şekil 3. tf.keras.utils.plot_model() çıktısını göstermektedir. Kredi - Yazar tarafından Jupyter Notebook kullanılarak geliştirilen resim.

TensorBoard, kullanıcıların farklı model çalıştırmalarındaki günlükleri görselleştirmesine olanak tanıyan bir kontrol paneli arayüzüdür. Günlükler, farklı dönemlerde doğruluk, geri çağırma, RMSE, MAPE ve MSE gibi herhangi bir model doğrulama ölçüsünün izlenmesinden model mimarisinin kavramsal bir grafiğinin oluşturulmasına kadar değişebilir. Bir modelin işlem düzeyinde bir grafik kullanılarak nasıl değiştirilebileceğine ilişkin öngörüler sağlarken, amaçlanan modelin beklenen tasarımla eşleşip eşleşmediğini görselleştirmek için güçlü bir araçtır.

Bu işlevselliği kullanmak için önce TensorBoard'u yüklememiz ve ardından bir günlük dizini oluşturmamız gerekir.

%load_ext tensorboarddatetime ithalatından datetimetensorflow ithalat keralarından# Keras TensorBoard geri çağrısını tanımlayın.logdir="logs/fit/" + datetime.now().strftime("%Y%m%d-%H%M%S")tensorboard_callback = keras.callbacks.TensorBoard(log_dir=logdir)

Keras TensorBoard geri çağrısını oluşturun ve eğitimden önce günlük dizinini belirtin. Model.fit()'e bu geri çağrıyı sağlayarak TensorBoard görselleştirmesi için grafik verilerinin günlüğe kaydedilmesini sağlayabilirsiniz. TensorBoard'u çalıştırdığınızda yüklenmesi birkaç dakika sürebilir.

model.fit(X2_tren, Y2_tren,toplu_boyutu=64,dönemler=5,geri aramalar=[tensorboard_callback])

Not: X2_train ve Y2_train, yukarıdaki kodlarda yansıtılmayan eğitim veri kümeleridir. Bunu kendi eğitim verilerinizle değiştirebilirsiniz.

TensorBoard her zaman varsayılan olarak op düzeyindeki grafiği gösterir. (“Varsayılan” etiketi solda vurgulanmıştır.) Veriler aşağıdan yukarıya doğru aktığı için grafik koda göre terstir. Ancak görebileceğiniz gibi, grafik kabaca Keras modelinin açıklamasına benziyor ve ek kenarlar diğer hesaplama düğümlerine yol açıyor (Tensorflow, 2022).

Şekil 4. TensorBoard'un çıktısını göstermektedir. Kredi - Yazar tarafından Jupyter Notebook kullanılarak geliştirilen resim.

TensorBoard'un nasıl kullanılacağına ilişkin daha fazla bağlamı Referans altında bulabilirsiniz.

Bir kullanıcının analizlerini bir grup paydaşa sunması gereken ticari açıdan bakıldığında, bu diyagramlar tartışmaya daha fazla karmaşıklık katmaktadır. Aşırı katma değer olmayabilirler. Ancak akademik ve öğrenme açısından bakıldığında, bu derin öğrenme mimarilerini görüntülemek için bu paketlerden yararlanmanın yararları vardır. Bana göre YSA görselleştiricisi, diyagramı sindirmesi kolay olduğu için diğerlerinden öne çıkıyor, oysa TensorBoard'un grafik çıktısı, sonuçların tüketilmesinden önce daha fazla teknik ayrıntı gerektiriyor.

Gavrikov, P. (2022, 13 Nisan). Keras / TensorFlow için görseller. GitHub. https://github.com/paulgavrikov/visualkeras

Gheorghiu, T. (2022, 21 Ekim). YSA Görüntüleyici. GitHub. https://github.com/RedaOps/ann-visualizer

Shah, A. (2018, 28 Nisan). Yapay Sinir Ağlarını (YSA) Tek Satır Kodla Görselleştirme. Orta. https://towardsdatascience.com/visualizing-artificial-neural-networks-anns-with-just-one-line-of-code-b4233607209e

Yığın Taşması. (nd). makine öğrenimi — Sinir ağı mimarilerini nasıl görselleştirirsiniz? Veri Bilimi Yığın Değişimi. 29 Ekim 2022'de şu adresten alındı: https://datascience.stackexchange.com/questions/12851/how-do-you-visualize-neural-network-architectures

Takım, K. (nd). Keras belgeleri: Model çizim yardımcı programları. Keras.io. 29 Ekim 2022'de şu adresten alındı: https://keras.io/api/utils/model_plotting_utils/#modeltodot-function

Tensor akışı. (2022, 6 Ocak). TensorFlow Grafiğinin İncelenmesi | Tensör Kartı. TensorFlow. https://www.tensorflow.org/tensorboard/graphs

Python'da Sinir Ağı Mimarileri Nasıl Görselleştirilir? Kaynak https://towardsdatascience.com/how-to-visualize-neural-network-architectures-in-python-567cd2aa6d62?source=rss—-7f60cf5620c9—4 adresinden https:// aracılığıyla yayınlanmıştır. doğrudatascience.com/feed

<!–

->

Zaman Damgası:

Den fazla Blockchain Danışmanları