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.

Şekil 1: Numpy Kod Çıktısı

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
Şekil 2: Pytorch TensorSensor Kod Çıktısı

Ş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_)
Şekil 3: Kod Çıktısı

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)
Şekil 4: Kod Çıktısı

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]
 
Şekil 5: Kod Çıktısı
explained.views[1]
Şekil 6: Kod Çıktısı

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)
Şekil 7: Kod Çıktısı

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.

Kaynakça

Yazar Hakkında
Toplam 14 yazı
Abdullah Enes Doruk
Abdullah Enes Doruk
Bursa Teknik Üniversitesi Elektrik Elektronik Mühendisliği Bölümü öğrencisi. İlgilendiği alanlar; Görüntü işleme, Sürücüsüz Araçlar, Derin Öğrenme. Abdullah Enes Doruk
Yorumlar (Yorum yapılmamış)

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

×

Bir Şeyler Ara