定义 Teacher Forcing 模型的各层
您将定义一个比先前版本更完善的机器翻译模型。您知道吗?像 Google 机器翻译这样的模型,训练时就使用了 Teacher Forcing 技术。
正如您已经看到的,之前的模型需要做一些小改动来采用 Teacher Forcing。在本练习中,您将对先前的模型进行必要的修改。已为您提供语言参数:en_len 和 fr_len(填充后的英文/法文句子的长度)、en_vocab 和 fr_vocab(英文/法文数据集的词汇表大小)以及 hsize(GRU 层的隐藏层大小)。请记住,解码器将接收一个长度比 fr_len 少 1 的法语序列。我们使用前缀 en 表示与编码器相关的内容,使用 de 表示与解码器相关的内容。
本练习是课程的一部分
使用 Keras 的机器翻译
练习说明
- 从
tensorflow.keras中导入layers子模块。 - 获取编码器的输出和状态值,并分别赋给
en_out和en_state。 - 定义一个解码器
Input层,用于接收长度为fr_len-1的 onehot 编码法语词序列。 - 定义一个
TimeDistributed的Densesoftmax 层,节点数为fr_vocab。
交互式实操练习
通过完成这段示例代码来试试这个练习。
# Import the layers submodule from keras
import ____.____.____ as layers
en_inputs = layers.Input(shape=(en_len, en_vocab))
en_gru = layers.GRU(hsize, return_state=True)
# Get the encoder output and state
____, ____ = en_gru(____)
# Define the decoder input layer
de_inputs = layers.____(shape=(____, ____))
de_gru = layers.GRU(hsize, return_sequences=True)
de_out = de_gru(de_inputs, initial_state=en_state)
# Define a TimeDistributed Dense softmax layer with fr_vocab nodes
de_dense = layers.____(____.____(____, activation=____))
de_pred = de_dense(de_out)