Sinir Ağlarının Modellenmesinde Keras Kullanımı

Devrim Ozcay
6 min readJul 8, 2022

--

Öncellikle yazıma geçmeden önce tüm okurların kurban bayramını kutluyorum. Nice bayramlara.

Derin öğrenme modellerinde sinir ağlarının ilgisi günden güne artarken,makine öğreniminde yeni olan yetenekli geliştiriciler için geliştirilmiş ve basitleştirilmiş üst düzey API’ ler çeşitli öneriler olmuştur.

Keras ise önde gelen üst düzey sinir ağları API’ lerinden birisidir. Python diliyle yazılmıştır. Bu kütüphane birden çok uç sinir ağını destekler. Bunlardan en önemlisi Tensorflow kütüphanesidir.

sinir ağı katmalarında keras kullanımı.

Keras ilkeleri

Keras kullanıcı dostu olmasının yanında, modüler, genişletilmesi kolay, Python ile çalışacak şekilde yaratılmıştır.. API , “makineler için değil, insanlar için tasarlandı” ve “bilişsel yükü azaltmak için en iyi uygulamaları takip ediyor”.

Neden Keras Kullanıyoruz?

Keras’ı kullanmanın en büyük nedenleri, başta kullanıcı dostu olmak olmak üzere yol gösterici ilkelerinden kaynaklanmaktadır. Öğrenme kolaylığı ve model oluşturma kolaylığının ötesinde Keras, geniş çapta benimseme, çok çeşitli üretim dağıtım seçenekleri için destek, en az beş arka uç motorla entegrasyon (TensorFlow, CNTK, Theano, MXNet ve PlaidML) gibi avantajlar sunar. ve çoklu GPU’lar ve dağıtılmış eğitim için güçlü destek. Ayrıca Keras, Google, Microsoft, Amazon, Apple, Nvidia, Uber ve diğerleri tarafından desteklenmektedir.

Keras arka uçları, Dayandığı API ‘ler

Keras uygun, tensör ürünleri ve kıvrımlar gibi kendi düşük seviyeli işlemlerini yapmaz; bunun için arka uç bir motora güveniyor. Keras birden çok arka uç motorunu desteklese de, birincil (ve varsayılan) arka ucu TensorFlow’dur ve birincil destekçisi Google’dır. tf.kerasKeras API, daha önce belirtildiği gibi TensorFlow 2.0'dan itibaren birincil TensorFlow API'si olacak olan TensorFlow olarak paketlenmiş olarak gelir .

Not✔: araya bir alıntı ekliyorum.

“To change back ends, simply edit your $HOME/.keras/keras.json file and specify a different back-end name, such as theano or CNTK. Alternatively, you can override the configured back end by defining the environment variable KERAS_BACKEND, either in your shell or in your Python code using the os.environ["KERAS_BACKEND"] property.”

Keras Modelleri

Keras’ın temel veeri yapısı Model’dir. Model’in ise iki türü vardır. Sequential modeli ve işlevsel API’ler kullanan Model sınıfıdır.

Keras Sıralı Modeller

Sequential, doğrusal bir katman yığınıdır ve katmanlar daha temel bir şekilde tanımlanabilir. model.add() bir modele katmanları eklemek ve modelleri genişletmek için kullanılır.

ÖRNEK:

TensorFlow API’lerine kıyasla gerçek kodda ne kadar az pürüz olduğunu belirtmekte fayda var. Her katman tanımı bir kod satırı gerektirir, derleme (öğrenme süreci tanımı) bir kod satırı alır ve uydurma (eğitim), değerlendirme (kayıpları ve metrikleri hesaplama) ve eğitilen modelden çıktıları tahmin etme her biri bir kod satırı alır.

Keras işlevsel API’si

Keras Sıralı modeli basit ancak model topolojisinde sınırlıdır. Keras işlevsel API’si , çoklu giriş/çok çıkışlı modeller, yönlendirilmiş döngüsel olmayan grafikler (DAG’ler) ve paylaşılan katmanlara sahip modeller gibi karmaşık modeller oluşturmak için kullanışlıdır.

İşlevsel API, Sıralı modelle aynı katmanları kullanır ancak bunları bir araya getirmede daha fazla esneklik sağlar. İşlevsel API’de önce katmanları tanımlar, ardından Modeli oluşturur, derler ve sığdırırsınız (eğitirsiniz). Değerlendirme ve tahmin, esasen Sıralı modeldekiyle aynıdır, bu nedenle aşağıdaki örnek kodda atlanmıştır.

from keras.layers import Input, Dense
from keras.models import Model

# Bu bir tensör döndürür
inputs = Input(shape=(784,))

# bir katman örneği bir tensörde çağrılabilir ve bir tensör döndürür
x = Dense(64, activation='relu')(inputs)
x = Dense(64, activation='relu')(x)
predictions = Dense(10, activation='softmax')(x)

# Bu, aşağıdakileri içeren bir model oluşturur:
# Giriş katmanı ve üç Yoğun katman
model = Model(inputs=inputs, outputs=predictions)
model.compile(optimizer='rmsprop',
loss='categorical_crossentropy',
metrics=['accuracy'])
model.fit(data, labels) # starts training

Not✔: Tensör nedir yapay zeka?

tensors

Tensörler, vektörlerin ve matrislerin isteğe bağlı sayıda boyuta genelleştirilmesidir. Vektörler 1D tensörleri oluşturmak ve işlemek için kullanılırken matrisler 2D tensörleri oluşturmak ve işlemek için kullanılır. Daha yüksek seviyeli boyutlar için diziler kullanılmaktadır.

Keras Katmanları

Dense: Keras’ta katmanları temsil eden “Dense” en çok kullanılan sınıflardan biridir. Dense ile katmanlar arasında nöron ya da düğümlerin geçişlerini sağlar. Bir başka deyişle, bir katmandan aldığı nöronları bir sonraki katmana girdi olarak bağlanmasını sağlar.

Activation Function: Aktivasyon fonksiyonları sinir ağlarında kilit bir rol oynar, bu nedenle daha iyi performans elde etmek için avantajlarını ve dezavantajlarını anlamak esastır.

bilinen aktivasyon fonksiyonları şunlardır: Step fonksiyonu, relu fonksiyonu, sigmoid fonksiyonu ,linner fonksiyonu, Hiperbolik tanjant fonksiyonu, Softmax fonksiyonu, Swish fonksiyonu, Swish fonksiyonu.

aktivasyon fonksiyonları.

Dropout: Dropout tekniği genelde tam bağlı katmanlarda (fully-connected layer) sonra kullanılır. Dropout kullanılarak fully-connected layerlardaki bağlar koparılır. Böylece node’lar birbiri hakkında daha az bilgiye sahip olur ve bunun doğal sonucu olarak node’lar birbirlerinin ağırlık değişimlerinden daha az etkilenirler.

Lambda: Lambda , bir ifade veya işlev kullanarak girdi verilerini dönüştürmek için kullanılır. Örneğin, lambda x: x ** 2 ifadesine sahip Lambda bir katmana uygulanırsa, işlemden önce girdi verilerinin karesi alınır.

RepeatVector dört argümana sahiptir ve aşağıdaki gibidir -

keras.layers.Lambda(function, output_shape = None, mask = None, arguments = None)
  • işlevi lambda işlevini temsil eder.
  • output_shape , dönüştürülmüş girdinin şeklini temsil eder.
  • mask varsa uygulanacak maskeyi temsil eder.
  • argümanlar , lamda işlevi için isteğe bağlı argümanı sözlük olarak temsil eder.

Son Olarak Birkaç Alıntı ekliyorum.

Keras layers

In the previous examples we only used Dense layers. Keras has a wide selection of predefined layer types, and also supports writing your own layers.

Core layers include Dense (dot product plus bias), Activation (transfer function or neuron shape), Dropout (randomly set a fraction of input units to 0 at each training update to avoid overfitting), Lambda (wrap an arbitrary expression as a Layer object), and several others. Convolution layers (the use of a filter to create a feature map) run from 1D to 3D and include the most common variants, such as cropping and transposed convolution layers for each dimensionality. 2D convolution, which was inspired by the functionality of the visual cortex, is commonly used for image recognition.

Pooling (downscaling) layers run from 1D to 3D and include the most common variants, such as max and average pooling. Locally connected layers act like convolution layers, except that the weights are unshared. Recurrent layers include simple (fully connected recurrence), gated, LSTM, and others; these are useful for language processing, among other applications. Noise layers help to avoid overfitting.

Keras datasets

Keras supplies seven of the common deep learning sample datasets via the keras.datasets class. That includes cifar10 and cifar100 small color images, IMDB movie reviews, Reuters newswire topics, MNIST handwritten digits, MNIST fashion images, and Boston housing prices.

Keras applications and examples

Keras also supplies ten well-known models, called Keras Applications, pretrained against ImageNet: Xception, VGG16, VGG19, ResNet50, InceptionV3, InceptionResNetV2, MobileNet, DenseNet, NASNet, MobileNetV2TK. You can use these to predict the classification of images, extract features from them, and fine-tune the models on a different set of classes.

By the way, fine-tuning existing models is a good way to speed up training. For example, you can add layers as you wish, freeze the base layers to train the new layers, then unfreeze some of the base layers to fine-tune the training. You can freeze a layer with by setting layer.trainable = False.

The Keras examples repository contains more than 40 sample models. They cover vision models, text and sequences, and generative models.

Deploying Keras

Keras models can be deployed across a vast range of platforms, perhaps more than any other deep learning framework. That includes iOS, via CoreML (supported by Apple); Android, via the TensorFlow Android runtime; in a browser, via Keras.js and WebDNN; on Google Cloud, via TensorFlow-Serving; in a Python webapp back end; on the JVM, via DL4J model import; and on Raspberry Pi.

Github python kodları linki bırakıyorum. Gerekli kodları inceleyiniz.

Başka bir yazıda görüşmek üzere. Hepinize başarılar değerli okurlarım🤍☺.

--

--

No responses yet