TensorSensor ile Yapay Sinir Ağlarında Tensör İşlemlerinin Görselleştirilmesi
Herkese Merhabalar, bu yazıda, TensorSensor kütüphanesini kullanarak derin öğrenme modellerinin arkasında çalışan matematiksel işlemleri görselleştirmek anlatılacaktır.
Çoğu insan, Pytorch veya Tensorflow gibi üst düzey kitaplıkları kullanarak derin öğrenme sorunlarını çözmektedir. Bu kütüphaneler, umursamadığımız veya daha sonra öğrenebileceğimiz birçok uygulama detayını saklar. Derin öğrenmeyi gerçekten anlamak için, bir noktada kendi ağ katmanlarını ve eğitim döngülerini tecrübe etmenin önemli olduğunu düşünüyorum. Bu işlemler sırasında kullanılan tensörlerin boyutu, arkasındaki matematiksel işlemler sonucunda oluşan tensörlerin boyutlarını görselleştirmek, derin öğrenme konusunda yeni başlayanlar için ve derin öğrenme modelleri ile ilgili çalışma yapan araştırmacılar için büyük önem arz etmektedir.
Derin öğrenme modellerini kullanırken veya oluştururken hatalar topluluğu ile karşılaşırız. Bu hatalar genellikle tensör boyutları ile arkasında çalışan matematiksel işlemlerin uyumsuzluğundan kaynaklanmaktadır. Bu sorunlar derin öğrenme modelinin büyüklüğü ile doğrusal şekilde artmaktadır. TensorSensor kütüphanesi ile matematiksel işlemler sırasında tensörlerin üzerindeki işlemler görselleştirilmektedir. Bu şekilde bir hata ile karşılaştığımızda sorunu daha çabuk bir şekilde çözüme kavuşturabiliriz.
TensorSensor kütüphanesini buradan yükleyebilirsiniz.
Görselleşirmeye tek katmanlı sinir ağı üzerinde başlayacağız.
import numpy as np import tsensor n = 200 # örnek sayısı d = 764 # örnek özellik sayısı n_neurons = 100 # katmandaki nöron sayısı W = np.random.rand(n_neurons, d) b = np.random.rand(n_neurons,1) X = np.random.rand(n,d) with tsensor.explain(): Y = W @ X.T + b
Bu kısımda numpy kütüphanesi kullanarak girdi (X), ağırlık (W) ve bias (b) parametrelerini oluşturduk. Son olarak bu parametreler ile hesaplama yapıldı ve TensorSensor kütüphanesi ile görselleştirildi.
200 örnekleme sayısı ve 100 nöron sayısı bulunmaktadır.
Şimdi ise pytorch kütüphanesini kullanarak görselleştirme işlemini yapacağız.
import torch import tsensor n = 200 # örnek sayısı d = 764 # örnek özellik sayısı n_neurons = 100 # katmandaki nöron sayısı W = torch.rand(n_neurons, d) b = torch.rand(n_neurons,1) X = torch.rand(n,d) with tsensor.explain(): Y = W @ X.T + b
Şimdi ise daha kompleks sinir ağları ile görselleştirme işlemini yapalım.
import torch import tsensor nhidden = 200 Whh_ = torch.eye(nhidden, nhidden) Uxh_ = torch.randn( nhidden,d) bh_ = torch.zeros(nhidden, 1) h = torch.randn(nhidden, 1) r = torch.randn(nhidden, 1) X = torch.rand(n,d) with tsensor.explain(): h_ = torch.tanh(Whh_ @ (r*h) + Uxh_ @ X.T + bh_)
yukarıdaki kodda anlaşılacağı üzere bir tane gizli katmanı eklendi. tanh aktivasyon fonksiyonu uygulandı.
Şimdi ise yapılan işlemleri sırası ile görselleştirme işlemine bakacağız.
import tsensor import torch W = torch.rand(size=(2000,2000)) b = torch.rand(size=(2000,1)) h = torch.rand(size=(1_000_000,)) x = torch.rand(size=(2000,1)) with tsensor.explain() as explained: a = torch.relu(x) b = W @ b + torch.zeros(2000,1)+(h+3).dot(h)
yukarıdaki kodda iki işlem yapıldı. Çıktı olarak iki işlemin çıktısını elde ettik. Bu iki çıktıyı aynı yerde oluşturmak gibi ayrı ayrı da oluşturabiliriz.
explained.views[0]
explained.views[1]
Bu şekilde yapılan işlemler ayrı ayrı çıktı alınabilir. Bu şekilde gizli katman sayısı fazla olan modellerde görselleştirme sırasında karmaşıklığı önlemiş ve sırasıyla incelem fırsatı yakalamış olmaktayız.
Buraya kadar 2 boyutlu tensör görselleştirmesi yaptık. Şimdi ise 3 boyutlu olarak görselleştirme işlemini yapacağız.
3 Boyutlu Tensör Görselleştirme
İki boyutun ötesinde tensör kullanan kodu anlamak ve hata ayıklamak gerçekten zor olabilir. Örneğin, performans nedenlerinden ötürü toplu olarak derin öğrenme ağlarını eğitmek çok yaygındır. Bu, girdi matrisi X’i n x d yerine n_batches x batch_size x d şeklinde yeniden şekillendirmek anlamına gelir. TensorSensor kütüphanesi ile 3 boyutlu tensör görselliştirme işlemi bu zorluğu engellemektedir.
import torch import tsensor n = 200 # örnek sayısı d = 764 # örnek özellik sayısı n_neurons = 100 # katmandaki nöron sayısı batch_size = 10 # paket sayısı n_batches = n // batch_size W = torch.rand(n_neurons,d) b = torch.rand(n_neurons,1) X = torch.rand(n_batches,batch_size,d) with tsensor.explain(): for i in range(n_batches): batch = X[i,:,:] Y = torch.relu(W @ batch.T + b)
Bu şekilde 3 boyutlu görselleştirme işlemi yapılmaktadır.
TensorSensor kütüphanesi ile 2 boyutlu ve 3 boyutlu tensor çıktılarını görselleştirebilmekteyiz. Bu şekilde tensör işlemlerini daha iyi anlayıp analiz edebiliyoruz. Kendi oluşturduğumuz derin öğrenme modellerini görselleştirip analiz etmek bu analiz sonucunda hata veya hataları fark etmek ve bunları düzeltme probleminde büyük avantaj sağlıyoruz.
Bu yazıda basit işlemler üzerinde TensorSensor görselleştirme kütüphanesinin kullanılmasını, 2 boyutlu ve 3 boyutlu tensor çıktılarının nasıl alınacağı anlatıldı.
Şimdi ise burada anlatılan uygulamaları kendi modelinizde uygulamak ve görsel çıktıları analiz etme sırası.
Görüşmek dileğiyle.