ПочатиПочніть безкоштовно

Визначення моделі з embedding

Ви визначатимете модель Keras, яка:

  • використовує шари Embedding,
  • тренується з Teacher Forcing.

Ця модель матиме два шари embedding: шар вбудовування для енкодера і шар вбудовування для декодера. Крім того, оскільки модель тренується за допомогою Teacher Forcing, у шарі Input декодера вона використовуватиме довжину послідовності fr_len-1.

У цій вправі у вас уже імпортовано всі потрібні keras.layers і Model. Також визначено змінні en_len (довжина англійської послідовності), fr_len (довжина французької послідовності), en_vocab (розмір англійського словника), fr_vocab (розмір французького словника) і hsize (розмір прихованого шару).

Ця вправа є частиною курсу

Machine Translation з Keras

Переглянути курс

Інструкції до вправи

  • Визначте шар Input, який приймає послідовність ID слів.
  • Визначте шар Embedding, що вбудовує en_vocab слів, має довжину 96 і може приймати послідовність ID (довжину послідовності задайте аргументом input_length).
  • Визначте шар Embedding, що вбудовує fr_vocab слів, має довжину 96 і може приймати послідовність із fr_len-1 ID.
  • Визначте модель, яка приймає вхід від енкодера та вхід від декодера (саме в такому порядку) і повертає передбачення слів.

Інтерактивна практична вправа

Спробуйте виконати цю вправу, доповнивши цей зразок коду.

# Define an input layer which accepts a sequence of word IDs
en_inputs = Input(____=(____,))
# Define an Embedding layer which accepts en_inputs
en_emb = ____(____, ____, input_length=____)(en_inputs)
en_out, en_state = GRU(hsize, return_state=True)(en_emb)

de_inputs = Input(shape=(fr_len-1,))
# Define an Embedding layer which accepts de_inputs
de_emb = Embedding(____, 96, input_length=____)(____)
de_out, _ = GRU(hsize, return_sequences=True, return_state=True)(de_emb, initial_state=en_state)
de_pred = TimeDistributed(Dense(fr_vocab, activation='softmax'))(de_out)

# Define the Model which accepts encoder/decoder inputs and outputs predictions 
nmt_emb = Model([____, ____], ____)
nmt_emb.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['acc'])
Редагувати та запускати код