Pytorch-学习记录 卷积操作——Tensor.size()
2017-11-28 20:24
585 查看
设计网络结构、看网络结构源码时时常需要计算输入在结构中经过卷积层、pooling层后尺寸大小,特此记录。
pytorch中二维卷积层接口为 Conv2d() ,参数详情不多赘述,详情请参阅官方文档。我在此主要说明卷积层对输入计算之后size的变化情况。
例如,
卷积层的in_channels首先要与input的channels相对应,具体到上例,就是黑色和蓝色框所对应的部分。out_channels自行设定,表示输出卷积核个数。kernel_size为卷积核大小,stride为卷积核在输入上的窗口移动步长,当输入stride参数为int时,表示卷积核移动在横向与纵向都是相同步长,若stride=(x,y),表示在横轴与纵轴以不同步长滑动。 padding简单理解为对输入特征图四周的填充。kernel_size、padding、stride会影响输出特征图的尺寸。
从上图可知,输入的 batchsize=64 在网络结构前向传递过程中不改变大小。同时,在kernel_size=3,stride=1,padding=1的前提下,卷积不改变输入图像的尺寸。
特征图尺寸计算方式:
feature-map height : {(input_height - kernel_size + 2*padding) / stride[0] }+1 (stride[0]表示横向移动步长])
相似地,feature-map width : {(input_width - kernel_size + 2*padding) / stride[1] }+1 (stride[1]表示纵向移动步长])
再举个例子,输入经过两层卷积和一层pooling后尺寸。
计算过程:
经过第一层卷积后:(224-7+2*2)/2+1=111
第二层卷积:(111-3+1*2)/1+1=111
pooling:(111-3)/2+1=55
每一层的输出channels即是下一层的输入channels。
Resnet、Inception结构中有大量kernel_size=3,stride=1,padding=1的层,他们不改变特征图图大小。
总结一下,设计网络结构时候要注意输入channels和卷积层的in_channels保持一致,不同的kernel_size、padding、stride会影响输出特征图尺寸。
参考资料:
pytorch中文文档 http://pytorch-cn.readthedocs.io/zh/latest/
pytorch中二维卷积层接口为 Conv2d() ,参数详情不多赘述,详情请参阅官方文档。我在此主要说明卷积层对输入计算之后size的变化情况。
例如,
卷积层的in_channels首先要与input的channels相对应,具体到上例,就是黑色和蓝色框所对应的部分。out_channels自行设定,表示输出卷积核个数。kernel_size为卷积核大小,stride为卷积核在输入上的窗口移动步长,当输入stride参数为int时,表示卷积核移动在横向与纵向都是相同步长,若stride=(x,y),表示在横轴与纵轴以不同步长滑动。 padding简单理解为对输入特征图四周的填充。kernel_size、padding、stride会影响输出特征图的尺寸。
从上图可知,输入的 batchsize=64 在网络结构前向传递过程中不改变大小。同时,在kernel_size=3,stride=1,padding=1的前提下,卷积不改变输入图像的尺寸。
特征图尺寸计算方式:
feature-map height : {(input_height - kernel_size + 2*padding) / stride[0] }+1 (stride[0]表示横向移动步长])
相似地,feature-map width : {(input_width - kernel_size + 2*padding) / stride[1] }+1 (stride[1]表示纵向移动步长])
再举个例子,输入经过两层卷积和一层pooling后尺寸。
计算过程:
经过第一层卷积后:(224-7+2*2)/2+1=111
第二层卷积:(111-3+1*2)/1+1=111
pooling:(111-3)/2+1=55
每一层的输出channels即是下一层的输入channels。
Resnet、Inception结构中有大量kernel_size=3,stride=1,padding=1的层,他们不改变特征图图大小。
总结一下,设计网络结构时候要注意输入channels和卷积层的in_channels保持一致,不同的kernel_size、padding、stride会影响输出特征图尺寸。
参考资料:
pytorch中文文档 http://pytorch-cn.readthedocs.io/zh/latest/
相关文章推荐
- Pytorch深度学习基础之Tensor 3ff0
- torch Tensor学习:切片操作
- 深度学习介绍(四)卷积操作
- mongodb学习记录之二:更新操作
- 生成对抗网络DCGAN+Tensorflow代码学习笔记(一)----main.py
- PyTorch(总)——PyTorch遇到令人迷人的BUG与记录
- Smart210学习记录-------文件操作
- 学习Bootstrap知识记录点-----标签操作
- 对于社保截止日接口的学习记录---对于php时间的操作(date_time和timestamp)
- JavaWeb学习记录(七)——MVC操作数据库增删改查与分页功能
- 荐书丨深度学习入门之PyTorch
- C#学习中记录(二)--------数据库的连接操作
- Hibernate学习-05:CRUD(增删改查)操作之修改记录
- pytorch crayon tensorboard
- Kafka学习笔记——使用Kafka记录APP的操作日志
- 深度学习框架之Pytorch学习(一)
- MySQL学习笔记-操作数据表中的记录
- pytorch学习_1
- Hadoop学习记录(3)|HDFS API 操作|RPC调用
- pytorch tensor.view()变换得到的 tensor 一致