PyTorch 深度学习:30分钟快速入门
卷积¶
卷积在 pytorch 中有两种方式,一种是 torch.nn.Conv2d()
,一种是 torch.nn.functional.conv2d()
,这两种形式本质都是使用一个卷积操作
这两种形式的卷积对于输入的要求都是一样的,首先需要输入是一个 torch.autograd.Variable()
的类型,大小是 (batch, channel, H, W),其中 batch 表示输入的一批数据的数目,第二个是输入的通道数,一般一张彩色的图片是 3,灰度图是 1,而卷积网络过程中的通道数比较大,会出现几十到几百的通道数,H 和 W 表示输入图片的高度和宽度,比如一个 batch 是 32 张图片,每张图片是 3 通道,高和宽分别是 50 和 100,那么输入的大小就是 (32, 3, 50, 100)
下面举例来说明一下这两种卷积方式
下面我们定义一个算子对其进行轮廓检测
下面我们可视化边缘检测之后的结果
可以看到两种形式能够得到相同的效果,不同的地方相信你也看到了,使用 nn.Conv2d()
相当于直接定义了一层卷积网络结构,而使用 torch.nn.functional.conv2d()
相当于定义了一个卷积的操作,所以使用后者需要再额外去定义一个 weight,而且这个 weight 也必须是一个 Variable,而使用 nn.Conv2d()
则会帮我们默认定义一个随机初始化的 weight,如果我们需要修改,那么取出其中的值对其修改,如果不想修改,那么可以直接使用这个默认初始化的值,非常方便
实际使用中我们基本都使用 nn.Conv2d()
这种形式
池化层¶
卷积网络中另外一个非常重要的结构就是池化,这是利用了图片的下采样不变性,即一张图片变小了还是能够看出了这张图片的内容,而使用池化层能够将图片大小降低,非常好地提高了计算效率,同时池化层也没有参数。池化的方式有很多种,比如最大值池化,均值池化等等,在卷积网络中一般使用最大值池化。
在 pytorch 中最大值池化的方式也有两种,一种是 nn.MaxPool2d()
,一种是 torch.nn.functional.max_pool2d()
,他们对于图片的输入要求跟卷积对于图片的输入要求是一样了,就不再赘述,下面我们也举例说明
可以看到图片的大小减小了一半,那么图片是不是变了呢?我们可以可视化一下
可以看到图片几乎没有变化,说明池化层只是减小了图片的尺寸,并不会影响图片的内容
跟卷积层一样,实际使用中,我们一般使用 nn.MaxPool2d()
PyTorch 深度学习:30分钟快速入门相关推荐
- PyTorch 深度学习:36分钟快速入门——GAN
自动编码器和变分自动编码器,不管是哪一个,都是通过计算生成图像和输入图像在每个像素点的误差来生成 loss,这一点是特别不好的,因为不同的像素点可能造成不同的视觉结果,但是可能他们的 loss 是相同 ...
- PyTorch 深度学习:34分钟快速入门——自动编码器
自动编码器最开始是作为一种数据压缩方法,同时还可以在卷积网络中进行逐层预训练,但是随后更多结构复杂的网络,比如 resnet 的出现使得我们能够训练任意深度的网络,自动编码器就不再使用在这个方面,下面 ...
- PyTorch 深度学习:32分钟快速入门——ResNet
ResNet 当大家还在惊叹 GoogLeNet 的 inception 结构的时候,微软亚洲研究院的研究员已经在设计更深但结构更加简单的网络 ResNet,并且凭借这个网络子在 2015 年 Ima ...
- PyTorch 深度学习:37分钟快速入门——FCN 做语义分割
语义分割是一种像素级别的处理图像方式,对比于目标检测其更加精确,能够自动从图像中划分出对象区域并识别对象区域中的类别 在 2015 年 CVPR 的一篇论文 Fully Convolutional N ...
- PyTorch 深度学习:33分钟快速入门——VGG
CIFAR 10¶ cifar 10 这个数据集一共有 50000 张训练集,10000 张测试集,两个数据集里面的图片都是 png 彩色图片,图片大小是 32 x 32 x 3,一共是 10 分类问 ...
- PyTorch 深度学习:32分钟快速入门——DenseNet
DenseNet¶ 因为 ResNet 提出了跨层链接的思想,这直接影响了随后出现的卷积网络架构,其中最有名的就是 cvpr 2017 的 best paper,DenseNet. DenseNet ...
- PyTorch 深度学习:38分钟快速入门——RNN 做图像分类
RNN 特别适合做序列类型的数据,那么 RNN 能不能想 CNN 一样用来做图像分类呢?下面我们用 mnist 手写字体的例子来展示一下如何用 RNN 做图像分类,但是这种方法并不是主流,这里我们只是 ...
- PyTorch 深度学习:35分钟快速入门——变分自动编码器
变分编码器是自动编码器的升级版本,其结构跟自动编码器是类似的,也由编码器和解码器构成. 回忆一下,自动编码器有个问题,就是并不能任意生成图片,因为我们没有办法自己去构造隐藏向量,需要通过一张图片输入编 ...
- PyTorch 深度学习:31分钟快速入门——Batch Normalization
Batch Normalization¶ 前面在数据预处理的时候,我们尽量输入特征不相关且满足一个标准的正态分布,这样模型的表现一般也较好.但是对于很深的网路结构,网路的非线性层会使得输出的结果变得相 ...
最新文章
- 牛客网暑期ACM多校训练营(第六场)J Heritage of skywalkert
- C++中的类模板详细讲述
- 想给男友一个惊喜,没想到是这样的结局......
- android 打开公众号页面_解决「微信公众号」开发网页安卓端访问空白问题
- python 量化投资 长期横盘_python量化投资才是最正确的方式,只教方法,不股荐!...
- Apache正向代理与反向
- Tomcat网站根目录设置
- MPEG-TS封装格式
- 12月19日科技资讯|富士康员工涉嫌盗卖 iPhone 零件遭调查;IntelliJ IDEA 2019.3.1 发布
- python截取_python如何截取字符串中特定部分
- 深入理解Java Stream流水线
- 火狐浏览器页面元素查看
- C++无法在头文件中定义string类数据
- ElasticFusion离线数据集运行结果再现问题总结
- adb一打开就闪退_常用的adb命令
- 搭建本地Spring Initializr服务(2020/4/17)
- 腾讯云认证云从业者考试攻略(人工智能从业者认证)
- Infiniband互连网络概述
- 利用 Python 得到未来七天天气预报
- 转:添加国内镜像源,飞速下载