【Python机器学习】序列到序列建模和注意力机制——训练序列到序列网络

在Keras模型中,创建序列到序列模型的最后一个步骤是编译(compile)和拟合(fit)。与其他神经网络模型相比,唯一的区别在于,之前预测的是二元分类:是或不是。这里有一个单分类或多分类的问题。在每个时刻,必须确定许多"类别"中的哪一个是正确的,这里有很多类别。模型必须在所有可能的词条之间进行选择。因为预测是使字符或词,而不是二进制状态,所以将基于categorical_crossentropy损失函数进行优化,而不是基于binary_crossentropy。因此,这是需要对Keras代码中model.compile步骤进行的唯一更改:

python 复制代码
model.compile(optimizer='rmsprop',loss='categorical_crossentropy')
model.fit([encoder_input_data,decoder_input_data],
          decoder_target_data,
          batch_size=batch_size,
          epochs=epochs)

通过调用model.fit函数,这里正在训练序列到序列的端到端网络。

生成输出序列

在生成序列之前,需要获取训练层的结构,并将其重新组装以用于生成序列。首先,定义特定编码器的模型,这个模型将被用来生成思想向量:

python 复制代码
encoder_model=Model(inputs=encoder_inputs,outputs=encoder_states)

解码器的定义看起来不易理解。首先,我们将定义解码器的输入,这里使用Keras输入层,但是传递的是编码器网络生成的思想向量,而不是传递独热向量、字符或词嵌入。要注意的是编码器返回一个包含两种状态的列表,在调用之前定义的decoder_lstm时,需要将该列表传递给之前也定义过的稠密层。该层的输出将提供所有解码器输出词条的概率。

在每个时刻,预测概率最高的词条接下来将作为最有可能的词条返回给解码器网络,并作为新输入继续传递到解码器的下一个迭代步骤:

python 复制代码
#定义一个输入层以获取编码器状态
thought_input=[Input(shape=(num_neurons,)),Input(shape=(num_neurons,))]
#将编码器状态作为初始状态传递给LSTM层
decoder_outputs,state_h,state_c=decoder_lstm(decoder_inputs,initial_state=thought_input)
#更新后的LSTM状态将成为下一次迭代的新细胞状态
decoder_states=[state_h,state_c]
#将输出从LSTM传递到稠密层,以预测下一个词条
decoder_outputs=decoder_dense(decoder_outputs)

#最后一步是将解码器模型绑定在一起
decoder_model=Model(
    inputs=[decoder_inputs]+thought_input,
    output=[decoder_outputs]+decoder_states
)

一旦建立了模型,就可以根据一个独热编码的输入序列和最后生成的词条来预测思想向量,从而生成整个序列。在第一次迭代期间,target_seq被设置成初始词条。在接下来的所有迭代中,target_seq将使用最后生成的词条进行更新。这个循环会一直进行下去,直到达到序列元素的最大数量或者解码器生成一个终止词条,此时生成过程停止:

python 复制代码
thought=encoder_model.predict(input_seq)
while not stop_condition:
    output_token,h,c=decoder_model.predict(
        [target_seq]+thought
    )
相关推荐
a努力。2 分钟前
MCP只连工具,不直接连技能
人工智能
neoooo4 分钟前
🚀Claude Code 小技巧(一):一键进入危险模式
前端·人工智能·后端
iCxhust4 分钟前
Matlab求解发电机的极限切除角
开发语言·算法·matlab·电力系统
zhanghaha13148 分钟前
Qt 类完整例程【逐词拆解 + 逐步骤执行保姆教程】
开发语言·qt
阿里云大数据AI技术14 分钟前
PAI 模型蒸馏全新发布「场景化蒸馏」:把最佳实践装进模板,让大模型能力"轻装上阵"
人工智能
亚川楼宇自控系统数据中心厂家20 分钟前
机房 3D 可视化技术:从平面监控到立体化管理的升级
大数据·数据库·人工智能
LaughingZhu21 分钟前
任务在飞书创建,开发在 Orca 继续:我把飞书项目接到了 Linear
大数据·人工智能·深度学习·神经网络·飞书
一水鉴天34 分钟前
UML/MOF 元层级与 Model & Notation:整体设计核心术语的定稿探讨 20261012(豆包“查看聊天内容”继续)
人工智能·机器学习
陈嘿萌38 分钟前
TIP 2026|没有分割标签,也能做任务导向图像融合:SSVIF的自监督语义注入
图像处理·人工智能·深度学习·计算机视觉·图像融合·学术研究与理论基础