Yapay Sinir Ağlarında Veri Gösterimi – TENSOR

TENSOR Nedir?

Temel olarak tensor, makina öğrenmesi sistemlerinde verinin tutulması için kullanılan bir yapıdır diyebiliriz. Örneğin matrisleri 2D tensor olarak adlandırabiliriz. Tensor, matrislerin rastgele sayıda boyuta genişletilmesidir. Tensor bağlamında boyut(dimension) yerine daha çok eksen(axis) terimi kullanılır.

Scalars (0D Tensor)

Tek bir sayı içeren tensorlere scalar denir. (0D tensor). Örneğin Numpy’de float32 ve float64 sayıları bir scalar tensor’dür. Numpy’de tensor’ün eksenlerini ndim attribute’ü ile gösterebiliriz. Scalar bir tensor’de 0 boyut vardır. (ndim==0). Tensor’un eksen sayısına aynı zamanda onun rank’I(derecesi) denir. Örnek bir Numpy scalar’ı aşağıdaki gibidir.

>>> import numpy as np
>>> x = np.array(84)
>>> x
array(84)
>>> x.ndim
0

Vectorler (1D Tensorler)

Sayılar dizisine vektör veya 1D tensor deriz. 1D tensor’de sadece bir eksen bulunur. Örnek bir Numpy vektörü aşağıdaki gibidir:

>>> import numpy as np
>>> x = np.array([12, 24, 5, 6, 26])
>>> x
array([12, 24, 5, 6, 26])
>>> x.ndim
1

Burada vektörümüzün 5 girdisi bulunur. Yani bu vektöre 5-boyutlu-vektör diyebiliriz. Burada en önemli şey 5D vektör ile 5D tensor’ü karıştırmamaktır. 5D vektörde bir eksen ve 5 boyut bulunurken 5D tensorde 5 eksen ve bu eksenlere ait bir çok boyut bulunabilir.

Matrisler (2D Tensorler)

Vektör dizilerini matris veya 2D tensor olarak adlandırabiliriz. Matrisin iki ekseni satırlar(rows) ve sütunlar(columns) diye adlandırılır. Örnek bir Numpy matrisi:

>>> import numpy as np
>>> x = np.array([[5, 78, 2, 34, 0],
[6, 79, 3, 35, 1],
[7, 80, 4, 36, 2]])
>>> x.ndim
2

Burada ilk eksene satırlar ikinci eksene sütunlar denir. Bizim örneğimiz için x’in ilk satırı [5, 78, 2, 34, 0], ilk sütunu ise [5, 6, 7] dir.

3D ve daha fazla boyutlu Tensorler

Örneğin matrislerden bir dizi elde etmek istersek 3D tensor elde ederiz. Aynı şekilde 3D tensorlerden bir dizi oluşturursakda 4D tensor elde ederiz. Derin öğrenmede genede 0D ve 4D tensorleri kullanacağız. Bazı durumlarda örneğin video verisi işlerken 5D tensorlerden faydalanabiliriz.

>>> x = np.array([[[5, 78, 2, 34, 0],
[6, 79, 3, 35, 1],
[7, 80, 4, 36, 2]],
[[5, 78, 2, 34, 0],
[6, 79, 3, 35, 1],
[7, 80, 4, 36, 2]],
[[5, 78, 2, 34, 0],
[6, 79, 3, 35, 1],
[7, 80, 4, 36, 2]]])
>>> x.ndim
3

Tensorlerin Anahtar Özellikleri

Bir tensorde temel olarak üç özellikten bahsedebiliriz. Bunlar:
1. Eksen Sayısı(Rank): Tensorün eksenini belirtir.

2. Form (Shape):
Tensor’ün formu her eksen kaç boyut olduğunu söyler. Örneğin yukarıdaki örnek matrisimizde matrisin formu (3,5)
3D tensorde ise (3,3,5)’tir.

3. Veri Tipi (Data Type)
Tensor için bulunan verinin tipini belirtir. bir tensorun içinde bulunan verinin tipi float32, uint8, float64 olabilir. Çok nadir durumlarda veri tipi char da olabilir. Ancak string tensorler Numpy ve çoğu diğer tensor kütüphanelerinde desteklenmez. Çünkü tensorler allocate edildikleri anda bellekte yaşarlar, sürekli hafıza segmentlerinde tutulurlar. Stringler ise değişken boyutlu olacağı için bu şekilde implement etmek zor olacaktır.


Loading

Facebooktwitterredditpinterestlinkedinmail

Linux Mint 18.3 Ses Cihazlarının Kaybolması(ANYDESK)

Merhaba,

linux-mint ses hatası

Kısa bir süre önce bilgisayarımın ses cihazlarını tanımaması sorunuyla karşılaştım. Aşağıdaki komutu çalıştırıp cihaza reset attıktan sonra sen başta geliyor daha sonra kendi kendine gidiyordu.

sudo alsa force-reload

Biraz kurcaladıktan sonra sebebinin son zamanlarda kurduğum AnyDesk uygulaması olduğunu farkettim. Uygulama bilgisayarım boot olduktan sonra otomatik başlıyor ve ses cihazlarının yok olmasına sebep oluyordu.

Aşağıdaki komutla AnyDesk’i bilgisayarınızdan kaldırarak sorunu düzeltebilirsiniz.

sudo apt-get purge anydesk

Kaynak: https://forums.linuxmint.com/viewtopic.php?t=268824

İyi kodlamalar,

Loading

Facebooktwitterredditpinterestlinkedinmail

Turing Bütünlüğü(Turing Completeness)

Turing Bütünlüğü(Tamlığı) bilgisayar bilimlerinde çok önemli bir notasyondur. Bir programlama dili Turing Bütünlüğünü sağladığını söylüyorsa Turing Makinası ile tasarlanabilen tüm hesaplama işlemlerini yapabilir demektir.  Zaten Turing Makinasının kendisi herhangi bir şeyin “hesaplanabilir” olup olmadığı gösterebilmek için icat edildi. Makina, çeşitli emirleri okuma, yazma,  bellekte saklama gibi ilkel işleri yapar.  Zaman içinde bir çok çalışma Turing makinasının gerçek dünya hesaplamaları için hemen hemen aynı modeller ortaya koydu. İlk yaklaşıma göre, eğer hesaplamanın Turing makinası ile yapılamayacağı kanıtlanırsa hiçbir hesaplama cihazının bu işlemi yapamayacağını varsayabiliriz. Diğer taraftan sistem basit Turing makinası emirleri ile tanımlanabiliyorsa bu işlem “Turing Bütünlüğü” içeriyor deriz ve bilgisayarlar ile bu hesaplamayı yapabiliriz.

Turing Tamlığına sahip diller:

Genel olarak tüm programlama dilleri:

Prosedürel programlama dilleri; CPascal.
Object-oriented diller; JavaSmalltalk veya C#.
Çok Paradigmalı diller; AdaC++Common LispObject PascalPythonR.
Fonksiyonel diller; Lisp ve Haskell.
Deklaratif diller;  XSLT
Mantıksal programlama dilleri;Prolog.

Turing Tamlığına sahip oyunlar:

Bonus:

Turing Tamlığına sahip kripto parabirimi:

Kaynak: wikipedia,  stackoverflow

Loading

Facebooktwitterredditpinterestlinkedinmail

MTP ile Bağlı Cihazlara Terminal Üzerinden Erişerek Verileri Kopyalama (Linux)

Merhaba,

MTP(Media Transfer Protocol) üzerinden bilgisayarımıza bağlı cihazlara terminal üzerinden nasıl erişeceğimizi anlatacağım.

Öncelikle niçin terminale ihtiyaç duyuyoruz ondan bahsedeyim. Bağlı cihazınızın içerisinde çok sayıda dosya varsa, linux taki dosya yöneticisi uygulaması (nemo, nautilus) kilitleniyor ve işlem yaptırmıyor. Bu durumda  veriler üzerinde yapmak istediğimiz işlemi terminal üzerinden çok daha hızlı bir şekilde yapabiliriz.

 

Cihazımızı bağlayalım ve aşağıdaki komutu çalıştıralım.

  • cd /run/user/$UID/gvfs/

Bağlı cihazları burada görebiliriz.

  • cd mtp* (sizin cihaz idniz)

Bu kadar 🙂 Dosya yöneticisinde yaptığınız tüm işlemleri burada daha hızlı bir şekilde yapabilirsiniz.

Dosya sistemine erişmek için gvsf’ten yararlandık. Peki nedir bu GVsf?

GVfs(GNOME Virtual File System), GNOME’un bize sunduğu sanal bir dosya sistemidir. Böylece farklı arayüzleri (mtp,smb,ftp,sftp) sanal bir arayüzde bize sunarak kullanım kolaylığı sağlar. Bunu Windows makinalardaki takılan usb ile bilgisayardaki harddiskin aynı gibi görünmesi olarak düşünebilirsiniz.

Kaynak: https://en.wikipedia.org/wiki/GVfs

İyi kodlamalar,

Loading

Facebooktwitterredditpinterestlinkedinmail

Kod yazmak anlamaktır.