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

如何用PyTorch的nn.Conv()将768尺寸张量投影为128尺寸?

PyTorch用nn.Conv实现张量维度投影的方案

你当前的输入张量形状为[197, 1, 768],要投影为[197, 1, 128],本质是对最后一维的特征做通道压缩,用kernel_size=1的1维卷积即可实现,具体实现如下:

完整代码示例

import torch
import torch.nn as nn

# 定义1x1卷积投影层,in_channels对应输入特征维度,out_channels对应目标输出维度
conv_proj = nn.Conv1d(in_channels=768, out_channels=128, kernel_size=1, bias=False)

# 模拟你的输入张量
input_tensor = torch.randn(197, 1, 768)

# 调整维度适配nn.Conv1d的输入要求:Conv1d要求输入格式为 [batch_size, in_channels, seq_len]
# 原形状 [197(seq_len), 1(batch), 768(in_channels)] → 转置为 [1,768,197]
transposed_input = input_tensor.permute(1, 2, 0)

# 卷积计算,输出形状为 [1, 128, 197]
conv_output = conv_proj(transposed_input)

# 调整维度回你需要的格式:[1,128,197] → 转置为 [197,1,128]
output_tensor = conv_output.permute(2, 0, 1)

# 验证输出形状
print(output_tensor.shape)
# 输出结果:torch.Size([197, 1, 128])

补充说明

  • 如果你不需要卷积层带偏置参数,保留bias=False即可,和常规投影层的配置一致;如果需要偏置,删掉该参数即可(默认bias=True)
  • 1x1卷积在这里的计算效果和nn.Linear(768, 128)完全等价,如果你没有强制要求使用卷积接口,用线性层实现会更简单,不需要做维度转置

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 03:54:04