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

为何torch.nn.functional.linear权重维度为(out,in)而非(in,out)?

为什么PyTorch的F.linear采用(out_features, in_features)的权重维度?
  • 与高层API参数定义保持统一
    PyTorch的nn.Linear层初始化时参数顺序为nn.Linear(out_features, in_features),对应的权重张量维度就是(out_features, in_features)。作为底层实现的F.linear采用相同维度,能让用户直接传递层的权重参数,无需额外转置,避免维度转换带来的错误和混淆。

  • 梯度计算与语义更直观
    权重矩阵的每一行对应一个输出特征的权重向量,当计算损失对权重的梯度时,梯度张量的维度会和权重完全一致。比如针对第i个输出特征的梯度,直接对应权重矩阵的第i行,这让调试、手动处理梯度或理解特征映射逻辑时,更符合“每个输出由输入特征线性组合生成”的直观认知。

  • 框架设计的历史延续性
    PyTorch继承自Torch7,而Torch7就采用了这种权重维度设计。延续该设计能保持生态一致性,降低老用户的学习成本,也避免了跨框架迁移时的额外维度转换工作。

  • 特征映射的语义对齐
    从线性变换的语义来看,每个输出特征本质是输入特征的加权求和。将权重矩阵的行对应输出特征,能直接体现“第i行权重负责计算第i个输出特征”的逻辑,让代码和数学直觉的对应关系更清晰,而非需要通过列来关联输出特征。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 03:52:05