PyTorch'ta Tensörlerle Temel İşlemler

Pytorch Ta Tensorlerle Temel Islemler



Tensörler, derin öğrenmede sayısal hesaplamalar için güçlü ve esnek bir veri yapısı sağlayan PyTorch'un temel taşıdır. NumPy dizileri gibi, çok boyutlu dizileri temsil ederler, ancak derin öğrenme görevleri için özel olarak tasarlanmış ek özellikler ve optimizasyonlara sahiptirler. Tensörler, PyTorch'ta sayısal verileri depolamak ve işlemek için birincil nesneler olduğundan, skalerlerden (0 boyutlu tensörler), vektörlere (1 boyutlu tensörler), matrislere (2 boyutlu tensörler) ve daha yüksek değerlere kadar farklı boyutlara sahip olabilirler. boyutlu tensörler.

Tensörlerin en büyük avantajlarından biri matematiksel işlemleri verimli bir şekilde yapabilmeleridir. Tensörler, toplama, çıkarma, çarpma ve bölme gibi öğe bazında işlemler ile matris çarpma ve devrik gibi matris işlemlerini içeren çok çeşitli aritmetik işlemleri destekler.

PyTorch, tensörleri değiştirmek için kapsamlı bir dizi işlev ve yöntem sağlar. Bunlar, tensörleri yeniden şekillendirmek, belirli öğeleri veya alt tensörleri çıkarmak ve tensörleri belirtilen boyutlar boyunca birleştirmek veya bölmek için yapılan işlemleri içerir. Ek olarak PyTorch, farklı şekil ve boyutlardaki tensörlerle çalışmayı kolaylaştıran tensörlerin indekslenmesi, dilimlenmesi ve yayınlanmasına yönelik işlevler sunar.







Bu makalede PyTorch'ta tensörlerle ilgili temel işlemleri öğreneceğiz, tensörlerin nasıl oluşturulacağını, temel işlemlerin nasıl gerçekleştirileceğini, şekillerini nasıl değiştireceğimizi ve bunları CPU ile GPU arasında nasıl taşıyacağımızı keşfedeceğiz.



Tensörler Oluşturma

PyTorch'taki tensörler çeşitli şekillerde oluşturulabilir. Bazı yaygın yöntemleri inceleyelim.



Tensör oluşturmak için “torch.Tensor” sınıfını veya “torch.tensor” fonksiyonunu kullanabiliriz. Bazı örneklere bakalım:





içe aktarmak meşale

# Oluşturmak 1 - Python listesinden boyutlu tensör
tensör_1d = meşale. tensör ( [ 1 , 2 , 3 , 4 , 5 ] )
Yazdır ( tensör_1d )

# Oluşturmak 2 - iç içe geçmiş bir Python listesinden boyutlu tensör
tensör_2d = meşale. tensör ( [ [ 1 , 2 , 3 ] , [ 4 , 5 , 6 ] ] )
Yazdır ( tensör_2d )

# Belirli bir şekle sahip sıfırlardan oluşan bir tensör oluşturun
sıfırlar_tensor = meşale. sıfırlar ( 3 , 2 )
Yazdır ( sıfırlar_tensor )

# Belirli bir şekle sahip birler tensörü oluşturun
olanlar_tensör = meşale. olanlar ( 2 , 3 )
Yazdır ( olanlar_tensör )

# Düzgün bir dağılımdan rastgele değerlere sahip bir tensör oluşturun
rastgele_tensör = meşale. rand ( 2 , 2 )
Yazdır ( rastgele_tensör )

Verilen örneklerde farklı şekillerde tensörler oluşturup bunları belirli sayılar, sıfırlar, birler veya rastgele değerler gibi çeşitli değerlerle başlatıyoruz. Önceki kod parçacığını çalıştırdığınızda benzer bir çıktı görmelisiniz:



Tensör İşlemleri

Tensörlerimiz olduğunda, onlar üzerinde eleman bazında aritmetik işlemler, matris işlemleri ve daha fazlası gibi çeşitli işlemleri gerçekleştirebiliriz.

Eleman Bazında Aritmetik İşlemler

Eleman bazında aritmetik işlemler, tensörler arasında eleman bazında hesaplamalar yapmamıza olanak tanır. Operasyona dahil olan tensörler aynı şekle sahip olmalıdır.

İşte bazı örnekler:

içe aktarmak meşale

# Tensörler oluştur
tensör1 = meşale. tensör ( [ 1 , 2 , 3 ] )
tensör2 = meşale. tensör ( [ 4 , 5 , 6 ] )

# Ek
ek = tensör1 + tensör2
Yazdır ( 'Ek:' , ek )

# Çıkarma
çıkarma = tensör1 - tensör2
Yazdır ( 'Çıkarma:' , çıkarma )

# Çarpma işlemi
çarpma işlemi = tensör1 * tensör2
Yazdır ( 'Çarpma işlemi:' , çarpma işlemi )

# Bölüm
bölüm = tensör1 / tensör2
Yazdır ( 'Bölüm:' , bölüm )

Verilen kodda iki tensör arasında toplama, çıkarma, çarpma ve bölme işlemlerini gerçekleştirerek hesaplanan değerlerle yeni bir tensör elde ediyoruz. Kod pasajının sonucu şu şekilde gösterilir:

Matris İşlemleri

PyTorch, tensörler için matris çarpımı ve devrik gibi verimli matris işlemleri sağlar. Bu işlemler özellikle doğrusal cebir ve sinir ağı hesaplamaları gibi görevler için kullanışlıdır.

içe aktarmak meşale

# Tensörler oluştur
tensör1 = meşale. tensör ( [ [ 1 , 2 ] , [ 3 , 4 ] ] )
tensör2 = meşale. tensör ( [ [ 5 , 6 ] , [ 7 , 8 ] ] )

# Matris çarpımı
matris_ürün = meşale. mat ( tensör1 , tensör2 )
Yazdır ( 'Matris Ürünü:' , matris_ürün )

# Matris devrik
matris_transpose = tensör1. T
Yazdır ( 'Matris Devriği:' , matris_transpose )

Verilen örnekte “torch.matmul” fonksiyonunu kullanarak matris çarpımını gerçekleştiriyoruz ve “.T” özelliğini kullanarak bir matrisin transpozunu elde ediyoruz.

Tensör Şekli Manipülasyonu

Tensörler üzerinde işlemler gerçekleştirmenin yanı sıra, sıklıkla belirli gereksinimlere uyacak şekilde şekillerini değiştirmemiz gerekir. PyTorch, tensörleri yeniden şekillendirmek için çeşitli işlevler sağlar. Bu işlevlerden bazılarını inceleyelim:

içe aktarmak meşale

# Bir tensör oluştur
tensör = meşale. tensör ( [ [ 1 , 2 , 3 ] , [ 4 , 5 , 6 ] ] )

# Tensörü yeniden şekillendirin
yeniden şekillendirilmiş_tensor = tensör. yeniden şekillendirmek ( 3 , 2 )
Yazdır ( 'Yeniden Şekillendirilmiş Tensör:' , yeniden şekillendirilmiş_tensor )

# Bir tensörün boyutunu elde et
boyut = tensör. boyut ( )
Yazdır ( 'Tensörün Boyutu:' , boyut )

# Eleman sayısını al içinde bir tensör
num_elements = tensör. isim ver ( )
Yazdır ( 'Element Sayısı:' , num_elements )

Verilen kodda, yeniden şekillendirme fonksiyonunu kullanarak bir tensörü yeniden şekillendiriyoruz, boyut yöntemini kullanarak bir tensörün boyutunu alıyoruz ve numel yöntemini kullanarak bir tensördeki toplam eleman sayısını elde ediyoruz.

Tensörleri CPU ve GPU Arasında Taşıma

PyTorch, eğitim sürelerini azaltarak derin öğrenme görevlerini önemli ölçüde hızlandırabilen grafik kartlarında hesaplamalar yapmamıza olanak tanıyan GPU hızlandırma desteği sağlar. Tensörleri CPU ve GPU arasında “to” yöntemini kullanarak taşıyabiliriz.

Not : Bu yalnızca makinenizde CUDA'lı bir NVIDIA GPU'nuz varsa yapılabilir.

içe aktarmak meşale

# CPU'da tensör oluştur
tensor_cpu = meşale. tensör ( [ 1 , 2 , 3 ] )

# Kontrol etmek eğer GPU mevcut
eğer meşale. farklı . gecerli ( ) :
# Tensörü GPU'ya taşı
tensor_gpu = tensor_cpu. ile ( 'farklı' )
Yazdır ( 'GPU'daki tensör:' , tensor_gpu )
başka :
Yazdır ( 'GPU kullanılamıyor.' )

Sağlanan kodda, torch.cuda.is_available() işlevini kullanarak bir GPU'nun mevcut olup olmadığını kontrol ediyoruz. GPU mevcutsa tensörü CPU’dan GPU’ya “cuda” argümanı ile “to” yöntemini kullanarak taşıyoruz.

Çözüm

Temel tensör işlemlerini anlamak, PyTorch ile çalışmak ve derin öğrenme modellerini oluşturmak için çok önemlidir. Bu makalede tensörlerin nasıl oluşturulacağını, temel işlemlerin nasıl gerçekleştirileceğini, şekillerinin nasıl değiştirileceğini ve CPU ile GPU arasında nasıl taşınacağını araştırdık. Bu bilgiyle donanmış olarak artık PyTorch'ta tensörlerle çalışmaya başlayabilir, hesaplamalar yapabilir ve gelişmiş derin öğrenme modelleri oluşturabilirsiniz. Tensörler, PyTorch'ta veri temsili ve manipülasyonunun temelini oluşturur ve bu çok yönlü makine öğrenimi çerçevesinin tüm gücünü açığa çıkarmanıza olanak tanır.