Definirea decodorului modelului de inferență
Modelul de inferență este cel care va fi utilizat în practică pentru a efectua traduceri la cererea utilizatorului. În acest exercițiu, va trebui să implementezi decodorul modelului de inferență.
Decodorul modelului de inferență este diferit față de decodorul modelului de antrenament. Nu putem alimenta decodorul cu cuvinte în franceză, deoarece tocmai acestea vrem să le prezicem. Din fericire, există o soluție: putem folosi cuvântul în franceză prezis la pasul de timp anterior pentru a alimenta decodorul modelului de inferență. Prin urmare, atunci când vrei să generezi o traducere, decodorul trebuie să producă un cuvânt pe rând, folosind ieșirea anterioară drept intrare.
Pentru acest exercițiu, variabilele hsize (dimensiunea ascunsă a stratului GRU), fr_len și fr_vocab au fost deja importate. Reține că prefixul de este folosit pentru a face referire la decodor.
Acest exercițiu face parte din cursul
Traducere automată cu Keras
Instrucțiuni pentru exercițiu
- Definește un strat
Inputcare acceptă un lot de secvențe de cuvinte franceze codificate one-hot (lungimea secvenței este 1). - Definește un alt strat
Inputcare acceptă un lot de stări de dimensiunehsize, pe care îl vei folosi pentru a transmite starea anterioară decodorului. - Obține ieșirea și starea decodorului
GRU. - Definește un model care acceptă intrarea cuvintelor franceze
Inputși intrarea stării anterioareInput, și returnează predicția finală împreună cu noua stareGRU.
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
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())