图解nn.Conv1d的具体计算过程
以下图解了1维卷积的计算过程,特别注意输入、卷积核参数、输出代码实现:注意pytorch中只能对倒数第2维数据进行卷积,因此传参时要转置一下,将需要卷积的数据弄到倒数第2维,这里将embeding的维度进行卷积# [1,7,5] 卷积 [2,2,5] = [1, 2, 6]a = torch.ones(1,7,5)b = nn.Conv1d(in_channels=5, out_channels=
·
-
以下图解了1维卷积的计算过程,特别注意输入、卷积核参数、输出

-
代码实现:注意pytorch中只能对倒数第2维数据进行卷积,因此传参时要转置一下,将需要卷积的数据弄到倒数第2维,这里将embeding的维度进行卷积,最后一般会在转置过来(没办法,pytorch设计的不太好,这点确实绕了一圈)
# [1,7,5] 卷积 [2,5,3] = [1, 6, 3]
a = torch.ones(1,7,5)
b = nn.Conv1d(in_channels=5, out_channels=3, kernel_size=2)(a.permute(0,2,1))
b = b.permute(0,2,1)#再换过来
输出结果:
tensor([[
[ 0.2780, 0.6589, -0.5446],
[ 0.2780, 0.6589, -0.5446],
[ 0.2780, 0.6589, -0.5446],
[ 0.2780, 0.6589, -0.5446],
[ 0.2780, 0.6589, -0.5446],
[ 0.2780, 0.6589, -0.5446]]])
torch.Size([1, 6, 3])
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐

所有评论(0)