Çıkarım modelinin kod çözücüsünü tanımlama
Çıkarım modeli, kullanıcının talep ettiği durumlarda çeviri yapmak için gerçek dünyada kullanılacak modeldir. Bu egzersizde, çıkarım modelinin kod çözücüsünü (decoder) uygulaman gerekecek.
Çıkarım modelinin kod çözücüsü, eğitim modelinin kod çözücüsünden farklıdır. Kod çözücüyü Fransızca kelimelerle besleyemeyiz çünkü tahmin etmek istediğimiz şey bu. Neyse ki bir çözüm var. Bir önceki zaman adımında tahmin edilen Fransızca kelimeyi, çıkarım modeli kod çözücüsüne girdi olarak kullanabiliriz. Bu nedenle, bir çeviri üretmek istediğinde kod çözücü, önceki çıktıyı girdi olarak tüketirken her seferinde bir kelime üretmelidir.
Bu egzersiz için, hsize (GRU katmanının gizli boyutu), fr_len ve fr_vocab değişkenleri içe aktarılmıştır. de önekinin kod çözücüye gönderme yapmak için kullanıldığını unutma.
Bu egzersiz
Keras ile Machine Translation
kursunun bir parçasıdırEgzersiz talimatları
- Dizi uzunluğu 1 olan, tek-sıcak (onehot) kodlanmış Fransızca kelime dizileri toplu girişini kabul eden bir
Inputkatmanı tanımla. - Kod çözücüye önceki durumu beslemek için kullanacağın,
hsizedurumundan oluşan bir toplu girişi kabul eden başka birInputkatmanı tanımla. - Kod çözücünün
GRUçıktısını ve durumunu al. - Fransızca kelimeler
Inputu ile önceki durumInputunu kabul eden ve nihai tahmini ve yeniGRUdurumunu çıktılayan bir model tanımla.
Uygulamalı interaktif egzersiz
Bu örnek kodu tamamlayarak bu egzersizi bitirin.
import tensorflow.keras.layers as layers
from tensorflow.keras.models import Model
# Define an input layer that accepts a single onehot encoded word
de_inputs = layers.____(shape=(____, ____))
# Define an input to accept the t-1 state
de_state_in = layers.____(shape=(____,))
de_gru = layers.GRU(hsize, return_state=True)
# Get the output and state from the GRU layer
de_out, de_state_out = ____(de_inputs, initial_state=____)
de_dense = layers.Dense(fr_vocab, activation='softmax')
de_pred = de_dense(de_out)
# Define a model
decoder = Model(inputs=[____, ____], outputs=[____, ____])
print(decoder.summary())