定义嵌入模型
您将定义一个 Keras 模型,其将:
- 使用
Embedding层 - 采用 Teacher Forcing 进行训练
该模型包含两个嵌入层:编码器嵌入层和解码器嵌入层。并且,由于模型使用 Teacher Forcing 进行训练,在解码器的 Input 层中将使用 fr_len-1 的序列长度。
在本练习中,所需的 keras.layers 和 Model 均已导入。此外,变量 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'])