鱼C论坛

 找回密码
 立即注册
查看: 2027|回复: 2

Transformer中decoder的输入

[复制链接]
发表于 2023-7-28 14:04:30 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
请问:

现在做时间序列预测,训练集batch之后的维度是batch*n_feature维,输入encoder时需要embedding吗?如果需要的话维度就变成batch*n_feature*embedding_size,此时调用nn.TransformerEncoderLayer()函数时,第一个参数d_model应该传入n_feature还是embedding_size呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-7-28 14:04:39 | 显示全部楼层
在Transformer中,decoder的输入通常需要进行embedding处理。对于时间序列预测任务,如果你的输入维度是batch * n_feature,其中n_feature表示每个时间步的特征维度,那么在输入decoder之前,你需要先将这些特征进行embedding操作。

所谓embedding,是将离散的特征映射为连续向量空间中的实数向量。这个操作有助于模型更好地学习特征之间的关系,并且能够在低维空间中表示输入信息,有利于模型的泛化能力。

因此,你的输入维度将变成batch * n_feature * embedding_size,其中embedding_size表示特征经过embedding后的向量维度。

在调用nn.TransformerEncoderLayer()函数时,第一个参数d_model应该传入embedding_size,而不是n_feature。因为d_model表示模型内部的特征维度大小,而这里的特征维度已经是embedding_size了。

总结一下:
1. 针对时间序列预测任务,需要对输入特征进行embedding操作。
2. 输入encoder的维度将变为batch * n_feature * embedding_size。
3. 调用nn.TransformerEncoderLayer()函数时,应该将embedding_size作为第一个参数d_model传入。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-28 14:05:09 | 显示全部楼层
在Transformer中,Decoder的输入通常需要进行嵌入(embedding)操作。如果你的训练集批次的维度是batch * n_feature,你需要首先将每个特征嵌入到一个固定长度的向量表示中,以便Transformer能够对其进行处理。

因此,在输入Encoder之前,你需要将维度变为batch * n_feature * embedding_size。这样做是为了将每个特征转换为embedding向量,使得Transformer能够学习特征之间的关系。

当调用nn.TransformerEncoderLayer()函数时,第一个参数d_model应该传入embedding_size。这是因为它代表了嵌入后的特征向量的维 度,而不是原始特征的维度n_feature。

总结一下:
- 训练集batch的维度是batch * n_feature。
- 输入Encoder之前,需要进行嵌入操作,将维度变为batch * n_feature * embedding_size。
- 在调用nn.TransformerEncoderLayer()函数时,第一个参数d_model应该传入embedding_size。

希望这个解答对你有帮助!如果你还有其他问题,请随时提问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-25 20:54

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表