You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TensorFlow中多头注意力的source与target含义及维度疑问

关于多头注意力模型中Source与Target的含义及输入形状说明

1. 核心概念区分

  • Source(源序列):是模型用来提取参考信息的输入序列,对应你场景里的原始时序特征数据,形状一般为(batch_size, source_time_steps, number_features)——比如做时序预测时,source就是历史观测的多特征数据。
  • Target(目标序列):是模型需要拟合或逐步生成的序列,在你的回归场景里,它通常是做过偏移处理的目标序列,用来让模型学习“基于历史信息预测后续时序值”的逻辑。

2. 训练时同时输入二者的原因

在带多头注意力的时序模型(比如Transformer Decoder结构)里,模型是基于“已输入的target片段”去对齐source中的上下文信息,进而预测下一个输出。以你的任务为例:
训练时会把target的前N-1个时间步作为输入(配合source提供的历史特征),让模型预测第N个时间步的值,通过这种方式逐步训练模型的注意力对齐能力。
代码里的model.fit([train_targets, train_sources], y, ...)中,y是最终要拟合的完整目标序列,train_targets是模型训练时的“输入型目标序列”(比如移位后的目标值),train_sources则是提供上下文的历史特征集。

3. 形状差异的常见原因

source和target的形状差异通常来自这几点:

  • 时序长度不同:比如source是过去100个时间步的特征,target是未来10个时间步的预测目标,二者的time_steps维度自然不同。
  • 特征维度不同:source包含多维度特征(比如温度、湿度等),而target可能只有要预测的单一维度(对应你输出的1维),所以特征维度存在差异。
  • 移位处理:自回归预测场景中,target会被左移一位(比如原始目标序列是[t1,t2,t3,t4],输入的target会变成[0,t1,t2,t3]),用来让模型学习从t1预测t2、t2预测t3的逻辑,这时形状可能和source一致,但内容是偏移后的目标值。

贴合你场景的例子

假设你要基于过去5步的3种特征,预测每一步的下一个时刻单一值:

  • train_sources形状:(batch_size, 5, 3)(5个历史时间步,3个特征)
  • train_targets形状:(batch_size, 5, 1)(左移后的目标值,第1个输入对应预测第2步的目标,最后一个输入对应预测第6步)
  • y形状:(batch_size, 5, 1)(完整的5步目标值,用于计算损失)

模型会通过source的历史特征,结合target的已输入部分,学习注意力对齐关系,最终输出符合要求的预测序列。

内容的提问来源于stack exchange,提问作者Hugofac

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 20:52:13