定义编码器
接下来,您将迈出构建机器翻译模型的第一步:实现编码器。与实际应用(例如 Google 的机器翻译服务)中的复杂模型相比,您要实现的编码器非常简单。不过别担心,尽管模型更简洁,所用概念与复杂模型是相同的。这里我们用前缀 en(例如 en_gru)指代与编码器相关的对象,用 de 指代与解码器相关的对象(例如 de_gru)。
您会看到我们把 en_vocab 设为比实际统计值更小(150,而非 228)。缩小词汇表可以降低模型的内存占用。适度缩减是可行的,因为会优先移除最罕见的词。在机器翻译任务中,罕见词通常不如高频词重要。
本练习是课程的一部分
使用 Keras 的机器翻译
练习说明
- 使用
shape参数,为一个词汇表大小为en_vocab、序列长度为en_len的输入定义Input层。 - 定义一个具有
hsize个隐藏单元且返回其状态的keras.layers.GRU层。 - 将
en_inputs传入该 GRU 层以获取输出,将 GRU 的状态赋给en_state,将输出赋给en_out。 - 定义一个
keras.models.Model,其输入为en_inputs,输出为en_state,并打印模型摘要。
交互式实操练习
通过完成这段示例代码来试试这个练习。
import tensorflow.keras as keras
en_len = 15
en_vocab = 150
hsize = 48
# Define an input layer
en_inputs = keras.layers.____(____=____)
# Define a GRU layer which returns the state
en_gru = ____(____, ____=____)
# Get the output and state from the GRU
____, ____ = ____(____)
# Define and print the model summary
encoder = ____(inputs=____, ____=____)
print(encoder.____)