开始使用免费开始使用

定义嵌入模型

您将定义一个 Keras 模型,其将:

  • 使用 Embedding
  • 采用 Teacher Forcing 进行训练

该模型包含两个嵌入层:编码器嵌入层和解码器嵌入层。并且,由于模型使用 Teacher Forcing 进行训练,在解码器的 Input 层中将使用 fr_len-1 的序列长度。

在本练习中,所需的 keras.layersModel 均已导入。此外,变量 en_len(英文序列长度)、fr_len(法文序列长度)、en_vocab(英文词汇表大小)、fr_vocab(法文词汇表大小)以及 hsize(隐藏层大小)都已定义。

本练习是课程的一部分

使用 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'])
编辑并运行代码