Yoğun ve TimeDistributed katmanları

Keras ile Machine Translation

Thushan Ganegedara

Data Scientist and Author

Dense katmanına giriş

  • Bir girdi vektörünü olasılıksal bir tahmine dönüştürür.
    • y = Ağırlıklar.x + Bias

Ağırlıklar ve biaslar

Keras ile Machine Translation

Dense katmanını anlama

Dense katmanı tanımlama ve kullanma

dense = Dense(3, activation='softmax')
inp = Input(shape=(3,))
pred = dense(inp)
model = Model(inputs=inp, outputs=pred)

Özel başlatma ile Dense katmanı tanımlama

from tensorflow.keras.initializers import RandomNormal
init = RandomNormal(mean=0.0, stddev=0.05, seed=6000)
dense = Dense(3, activation='softmax', 
             kernel_initializer=init, bias_initializer=init)
Keras ile Machine Translation

Dense katmanının giriş ve çıkışları

  • Yoğun softmax katmanı
    • (batch size, input size) biçiminde bir dizi alır
      • ör. x = [[1, 6, 8], [8, 9, 10]] # 2x3 dizi
    • (batch size, sınıf sayısı) biçiminde bir dizi üretir
      • ör. Sınıf sayısı = 4
      • ör. y = [[0.1, 0.3, 0.4, 0.2], [0.2, 0.5, 0.1, 0.2]] # 2x4 dizi
    • Her örnek için çıktı, sınıflar üzerinde bir olasılık dağılımıdır
      • Sütunlar boyunca toplamı 1'dir
    • Her örneğin sınıfını np.argmax(y, axis=-1) ile alabilirsiniz
      • ör. np.argmax(y,axis=-1)[2,1]
Keras ile Machine Translation

TimeDistributed katmanını anlama

  • Dense katmanlarının zaman serisi girdilerini işlemesini sağlar
dense_time = TimeDistributed(Dense(3, activation='softmax'))
inp = Input(shape=(2, 3))
pred = dense_time(inp)
model = Model(inputs=inp, outputs=pred)
Keras ile Machine Translation

TimeDistributed katmanının giriş ve çıkışları

  • (batch size, sequence length, input size) biçiminde bir dizi alır
x = [[[1, 6], [8, 2], [1, 2]], 
    [[8, 9], [10, 8], [1, 0]]] # 2x3x2 dizi
  • (batch size, sequence length, sınıf sayısı) biçiminde bir dizi üretir
    • ör. Sınıf sayısı = 3
y = [[[0.1, 0.5, 0.4], [0.8, 0.1, 0.1], [0.6, 0.2, 0.2]], 
     [[0.2, 0.5, 0.3], [0.2, 0.5, 0.3], [0.2, 0.8, 0.0]]] # 2x3x3 dizi
  • Her örnek için çıktı, sınıflar üzerinde bir olasılık dağılımıdır
  • Her örneğin sınıfını np.argmax(y, axis=-1) ile alabilirsiniz
Keras ile Machine Translation

Zaman boyutunda dilimleme

y = [[[0.1, 0.5, 0.4], [0.8, 0.1, 0.1], [0.6, 0.2, 0.2]], 
     [[0.2, 0.5, 0.3], [0.2, 0.5, 0.3], [0.2, 0.8, 0.0]]] # 2x3x3 dizi
classes = np.argmax(y, axis=-1) # 2 x 3 dizi

Zaman-dağıtımlı veride yineleme

for t in range(3):
  # y ve classes'ın t'inci zaman dilimi dilimini alın
  for prob, c in zip(y[:,t,:], classes[:,t]):
     print("Prob: ", prob, ", Sınıf: ", c)
Prob:  [0.1 0.5 0.4] , Sınıf:  1
Prob:  [0.2 0.5 0.3] , Sınıf:  1
Prob:  [0.8 0.1 0.1] , Sınıf:  0
...
Keras ile Machine Translation

Ayo berlatih!

Keras ile Machine Translation

Preparing Video For Download...