TensorFlow-2.X-Ogretici-Notebooklar-Turkce
TensorFlow-2.X-Ogretici-Notebooklar-Turkce copied to clipboard
TensorFlow 2.X hakkında (Türkçe) öğretici notebooklar paylaşıyorum. Repoyu yararlı bulursanız yıldızlayarak destek olabilirsiniz :)
TensorFlow 2.X Öğretici Notebooklar Serisi
NOT
Bazı notebooklarda kullandığım TensorFlow-Addons Mayıs 2024'te hayatının sonuna gelecektir. Belli fonksiyonlar zamanla Keras içine entegre edilecektir. Major değişimler olduğu sürece güncellemelere devam edeceğim.
Videolar
1 saatte TensorFlow Hub ile Dengesiz Veriseti Sınıflandırma - Focal Loss Giriş
- https://www.youtube.com/watch?v=SRBCuTAnvSg
1 Saatte TensorFlow ile Görüntü Sınıflandırma | ANN - CNN - Transfer Learning
- https://www.youtube.com/watch?v=WW-BUMADPtQ&
TF-Keras Sıfırdan Loss Yazma - Focal Loss ve Class Weight İlişkisi
- https://www.youtube.com/watch?v=ooEvgEQhXcQ
Genel Bakış - Mevcut Olanlar
Detaylı Açıklamalar
0 - TensorFlow'a Giriş
- TensorFlow Nedir? TensorFlow ve GPU
-
Tensörlere Giriş
- Tensör nedir?
- Arraylerle arasındaki fark nedir?
-
Tensörlerin Bilgilerine Erişmek
-
Shape
,rank
vesize
nedir?
-
-
Tensör Operasyonları
- Matematiksel işlemler
- Matris çarpımı
-
tf.transpose()
vetf.reshape()
-
- Tensör veri tipini değiştirmek
- İstatistiksel işlemler
-
assign
veadd_assign
fonksiyonları
-
Tensörleri Birleştirmek
-
tf.concat()
vetf.stack()
-
-
Diğer Tensör Operasyonları
-
tf.eye()
,tf.reverse()
,tf.roll()
vetf.unique_with_counts()
.
-
-
Tensörler ve Numpy
- Tensörleri NumPy arraylerine dönüştürmek
-
@tf.function ve AutoGraph
- TF1.X graf objesi ve TF2.X yenilikleri
1 - TensorFlow - Keras ile Lineer Regresyon ve Patlayan Gradyanlar
- Normal Lineer Regresyon
-
Gradyan Patlaması Sorunu
- Gradient Clipping ve Adaptive Optimizer
-
AdaGrad, RMSProp ve Adam Optimizerları Nedir?
- Matematiksel gösterimleriyle arasındaki ilişki
- Modele Dense Layer Eklemek
2 - Lineer Olmayan Regresyon, Aktivasyonlar ve Layer Subclassing
- Normal Lineer Regresyon
-
Aktivasyon Fonksiyonları
- Sigmoid, Tanh, Softmax, ReLU, Leaky ReLU ve Swish aktivasyonları
-
Aktivasyonları kullanarak aynı modeli yazmak
- Aktivasyonların plot edilip performansının karşılaştırılması
- Custom Layer Yazmak - Layer Subclassing
3 - TF-Keras ile CNN - Bir Input İki Model Yaklaşımı
- Fashion MNIST Verisini Yükleme
-
Basit CNN Modeli Yazmak
- 2 tane Conv2D Layerı ve 2 tane Dense Layer
-
Flatten ve GlobalMaxPooling Arasındaki Fark
- Arka planda nasıl hesaplanıyorlar?
-
Functional API ile Bir Inputu İki Farklı Şekilde Kullanmak
- Modeli plot ederek daha iyi görmek
- Confusion Matrix ve Classification Report Yazdırmak
4 - DenseNet121 ve Çoklu Optimizer Yaklaşımı
- Kütüphaneler
- Veriyi Yükleme ve Normalize Etme
- Preprocessing Layerları
-
Transfer Learning Nedir?
- Önceden Eğitilmiş Modeli Doğrudan Kullanmak
- Önceden Eğitilmiş Modelleri Özellik Çıkarıcı (Feature Extractor) Olarak Kullanmak
- Önceden Eğitilmiş Modelin Son Katmanlarını -Fine Tune- Etmek
- Başlangıç Noktası Olarak Önceden Eğitilmiş Bir Model Kullanmak
-
Optimizerlar
- RAdam
- Lookahead
- LazyAdam
- Multi-Optimizer Wrapper - TensorFlow Addons
- Modelin Test Setindeki Başarısı
5 - Detaylı Transformer Anlatımı - CNN ile Ensemble
Kütüphaneler
- TensorFlow - Keras
-
TFDS:
wikipedia_toxicity_subtypes
verisetinin yüklenmesi. - TensorFlow Addons
- Plotly
- Sklearn
- Matplotlib - Seaborn
Verisetinin İşlenmesi
Kullanılan fonksiyonlar:
-
tf.strings.regex_replace
-
tf.strings.lower
-
tf.one_hot
- Cümleler için Max Uzunluk Seçilmesi
-
TextVectorization
Layerının Kullanılması
Attention, Multihead Attention Nedir?
- RNN Yapılarının Yüzeysel Üstünden Geçilmesi
- Vektör - Dizi Modelleri (Vector-to-Sequence)
- Dizi - Vektör Modelleri (Sequence-to-Vector)
- Dizi - Dizi Modelleri (Sequence-to-Sequence)
- RNN'lerdeki Sorun ve Transformer ile Karşılaştırma
- Word Embedding
- Positional Encoding
- Transformer Neden Buna İhtiyaç Duyuyor?
- Cümle Uzunluğuna Göre Vektörler Tanımlamak
- Normalize Vektörler Kullanmak
- Attention Is All You Need --> Önerilen Çözüm
- 3D Plotlar ile Çözümün Açıklanması
- Transformer Mimarisine Giriş
- Kısaca Attention Nedir?
- Self-Attention Nedir?
- Transformerdaki MultiHeadAttention Nedir?
- Key, Value, Query Kavramları
- Adım Adım Matris İşlemleri
- Attention Filter
- Multihead ve Attention Head Açıklaması
Transformer Modelinin Yazılması
- Transformer Encoder Kısmının
tf.keras.layers.Layer
Olarak Yazılması - Word + Positional Embeddinglerinin
tf.keras.layers.Layer
Olarak Yazılması
Ana Modelin Functional API ile Yazılması
- Transformer Mimarisinin Eklenmesi
- 1D CNN Yapılarının Eklenmesi
- Çıktıların Birleştirilmesi
6 - tf.data, tf.image, tfa.image, MiniDenseNet, RAdam Part 1-2
-
Veri Yükleme
-
tf.data.Dataset.list_files()
Kullanımı
-
-
tf.data Pipeline
- tf.data pipeline'ı oluşturup, tf.image ve tfa.image kullanarak farklı dönüşümler uygulamak.
-
Modeli Oluşturmak
- Mini DenseNet ve Layer Subclassing kullanmak
- Modeli custom training loop kullanarak eğitmek
-
Loss ve Accuracy
- Training loop kullanarak toplanan loss ve accuracy değerlerini plot edip görmek
- Model Performansı
- Modelin performansını görmek için confusion matrix ve classification report kullanmak
6.1 - Notebook X + GradCAM
Notebook 6'yı tamamen kapsayıp ek olarak Grad-CAM anlatımı mevcuttur.
- Grad-CAM
- Neden GradCAM'e ihtiyaç duyarız?
- GradCAM Nedir?
- GradCAM'i test setinde denemek
-
7 - Softmax Çıktıları ve -Adversarial Attack-
-
fashion_mnist Verisetini Yükleyip Hazırlamak
- tf.one_hot()
- tf.cast()
- prefetch()
-
Basit Bir CNN Yazmak
- Conv2D()
- MaxPooling2D()
-
Resimlere Basit Noise Ekleyip Tahmin Almak
- Noise ve Etkilenen Softmax Çıktıları
-
InceptionResNetV2'de Aynı Noise Yaklaşımını Test Etmek
- 55M Parametresi Olan InceptionResNetV2
- Noise ve InceptionResNetV2
-
tf.GradientTape
- tape.watch()
- optimizer.apply_gradients()
-
InceptionResNetV2'ye Adversarial Attack
- Özel Bir Noise Vektörü Oluşturmak
- Sonucu Görselleştirmek
-