关于torch.nn.Linear的输入与输出探讨

关于torch.nn.Linear的一点问题

  最近写Transformer代码的时候,FFN层是线性层,突然发现我丢进去的是一个三维的张量[batch_size, H, d_model],但是线性层nn.Linear竟然还给它算出来了,而且预期结果形状还是我想要的[batch_size, H, d_ff]。印象中nn.Linear的输入和输出都是二维的。于是我去找了一圈博客,各种博客里面写的都是输入二维的,更疑惑了。最后去看了官方文档才知道,他们都有问题。

在这里插入图片描述

  输入和输出的维度可以是任意,而且输出的形状除了最后一个维度,其他的均与输出一样。比如[32, 128, 192]形状的张量,通过nn.Linear(192, 256)的线性层,其输出的形状是[32, 128, 256]。

  • 72
    点赞
  • 72
    收藏
    觉得还不错? 一键收藏
  • 24
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 24
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值