卷积神经网络构建(pytorch)

两层简单卷积网络构建:

impot torch 
from torch import nn

data = torch.ones(size=(10,3,28,28))

conv1 = nn.Conv2d(3,6,3)

在卷积层con1中,三个数字分别代表参数in_channles(输出通道),out_channles(输入通道),kernel_size(卷积核大小).

其中输出通道和我们输入数据的通道数保持一致,输入通道和卷积核大小由自己决定,但要注意,下一层卷积层输入通道要与上一层输出通道保持一致。

这里我们定义下一层conv2

conv2 = nn.Conv2d(6,4,3)

定义好之后可以打印查看结果

print(conv1(data))
print(conv2(conv1(data)))

步长

在不设置stride(步长)的情况下,默认为一,可以通过对步长的设置来控制特征图的大小。但是当步长为1时,会出现中间部分被重复扫描的现象,‘中间重边缘轻’。而增大步长,过大时会出现一些边缘扫描不到的情况,如图:

填充法

当步长为3时,卷积核不会出现重复扫描的过程,但是最右边无法被扫描到,这时候需要用填充法对图像进行填充,由参数padding和padding_mode来控制。

padding=1时,图像的上下左右各添加一个像素,padding_mode则可以选择要填充的值。

对于padding_mode,输入值为‘zero’时,用数字0填充。输入值为‘cicular’时使用环形填充,如下图:

当然即使有了padding也不是一定能扫描完全,像这种:

这个时候使用‘valid'或者'same'方法来解决:

valid方法是对后续未扫描到的像素抛弃,same则是做填充,不过same方法只能在tensorflow中实现。根据上面的规律,可以得到特征图片大小与输入图片大小的规律:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值