torch. nn.Conv1d 的简单使用

Conv1

class torch.nn.Conv1d(in_channels, out_channels, kernel_size, stride=1, padding=0, dilation=1, groups=1, bias=True)

in_channels(int) – 输入信号的通道。在文本分类中,即为词向量的维度,也可以理解为特征向量的维度
out_channels(int) – 卷积产生的通道。可以理解为卷积核的数量
kernel_size(int or tuple) - 卷积核的尺寸,卷积核的大小为(k,),第二个维度是由in_channels来决定的,所以实际上卷积大小为kernel_size*in_channels
stride(int or tuple, optional) - 卷积步长
padding (int or tuple, optional)- 输入的每一条边补充0的层数
dilation(int or tuple, `optional``) – 卷积核元素之间的间距
groups(int, optional) – 从输入通道到输出通道的阻塞连接数
bias(bool, optional) - 如果bias=True,添加偏置

输出结果的shape计算

计算output的shape

假设一个输入tensor

torch.ones(1,5,10) 

# 解释一下:1 就是batchsize 5是通道数, 10是数据维度

input=torch.ones(1,5,10)

那么我们的卷积网络的参数就应该是:

in_channels应该是通道数,out_channels自定义,kernel_size 定义卷积的列数,卷积核的大小就是:in_channels * kernel_size

conv=nn.Conv1d(in_channels=5,out_channels=10,kernel_size=2)
print(conv.weight)

 所以卷积核的形状就应该是 out_channle * in_channle *kernel_size

# 解释一下:1 就是batchsize 5是通道数, 10是数据维度

input=torch.ones(1,5,10)
print(input)
# kernel卷积核大小就是in_channels * kernel_size 对应:5 * 2
# 其中卷积核的数量和out_channels的数目是一致的。
#
conv=nn.Conv1d(in_channels=5,out_channels=10,kernel_size=2)
nn.init.constant_(conv.weight,1)
print(conv.weight)

output=conv(input)
print(output.shape)

解释一下,output

torch.Size([1, 10, 9])

1 batchsize不变,10对应out_channels ,9 是应该原先数据是10列,卷积核列维度是2 ,每次移动步长是1

out_channels = 输入维度-卷积核维度+1

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值