Zxing_Piao 2023-07-15 13:02 采纳率: 50%
浏览 26
已结题

Transformer在预测阶段解码器的输入是什么?就只输入一个BOS开始符号吗?

最近学了transformer框架
在训练过程解码器的输入都是正确标签加上掩码
那预测阶段呢或者说实际应用阶段解码器输入应该是什么呢?

  • 写回答

2条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-07-15 14:24
    关注
    • 请看👉 :还在魔改Transformer结构吗?微软&中山大学开源超强的视觉位置编码,涨点显著
    • 以下回答由chatgpt基于相关博客总结生成:

      根据问题描述,Transformer在训练过程中,解码器的输入是正确的标签加上掩码。在预测阶段或者实际应用阶段,解码器的输入应该是通过前一个时间步的解码器输出来生成的。具体的解决方案如下:

      Step 1: 准备Transformer模型 首先,需要准备一个Transformer模型。你可以使用现成的模型库,比如transformers库,或者根据自己的需求实现一个Transformer模型。

      Step 2: 准备解码器输入 在预测阶段,解码器的初始输入是一个特殊的标记,比如开始标记<sos>。接下来的每一个时间步,解码器的输入都是通过前一个时间步的解码器输出来生成的。所以,需要一个循环来生成解码器的输入序列。

      Step 3: 生成解码器输入序列 使用一个循环来生成解码器的输入序列,直到达到预定的序列长度或者遇到结束标记<eos>。在每个时间步,将前一个时间步的解码器输出作为当前时间步的输入,并将当前时间步的输出添加到结果序列中。

      下面是一个示例代码,用来生成解码器的输入序列:

      # 准备Transformer模型
      model = TransformerModel()
      
      # 准备解码器输入
      decoder_input = torch.tensor([<sos>])  # 初始输入为开始标记
      
      max_length = 100  # 设置最大序列长度
      
      result = []  # 保存解码器的输出序列
      
      # 生成解码器输入序列
      for i in range(max_length):
          # 使用前一个时间步的解码器输出作为当前时间步的输入
          decoder_output = model.decoder(decoder_input)
      
          # 获取当前时间步的输出
          output_token = decoder_output.argmax(dim=-1)
      
          # 将当前时间步的输出添加到结果序列中
          result.append(output_token.item())
      
          # 检查是否达到结束标记
          if output_token.item() == <eos>:
              break
      
          # 更新解码器输入为当前时间步的输出
          decoder_input = output_token
      
      # 将结果序列转换为字符串或标签的形式
      result = convert_to_string(result)
      

      在上述代码中,首先准备了一个Transformer模型model,然后设置了一个循环来生成解码器的输入序列。在每个时间步中,使用前一个时间步的解码器输出作为当前时间步的输入,然后获取当前时间步的输出,并将其添加到结果序列中。当输出为结束标记时,循环停止。最后,可以将结果序列转换为字符串或标签的形式。

      请注意,上述代码仅为示例,实际应用中可能需要根据具体情况进行调整和优化。另外,具体的实现方式也可能因不同的Transformer模型库而有所差异。以上是根据问题描述和参考资料给出的一个解决方案,希望能帮到你。如果有任何问题,请随时提问。

    本回答被专家选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 7月26日
  • 专家已采纳回答 7月18日
  • 创建了问题 7月15日

悬赏问题

  • ¥15 如何让子窗口鼠标滚动独立,不要传递消息给主窗口
  • ¥15 如何能达到用ping0.cc检测成这样?如图
  • ¥15 关于#DMA固件#的问题,请各位专家解答!
  • ¥15 matlab生成的x1图不趋于稳定,之后的图像是稳定的水平线
  • ¥15 请问华为OD岗位的内部职业发展通道都有哪些,以及各个级别晋升的要求
  • ¥20 微信小程序 canvas 问题
  • ¥15 系统 24h2 专业工作站版,浏览文件夹的图库,视频,图片之类的怎样删除?
  • ¥15 怎么把512还原为520格式
  • ¥15 MATLAB的动态模态分解出现错误,以CFX非定常模拟结果为快照
  • ¥15 求高通平台Softsim调试经验