pytorch学习笔记(3):常用网络层介绍

本文介绍了PyTorch中常用的神经网络层,包括卷积层、池化层、dropout、BN层,以及激活函数ReLU、ELU、sigmoid、tanh和softmax。还简单讨论了损失函数MSELoss和CrossEntropyLoss在训练过程中的作用。这些基础知识对于构建自定义深度学习网络至关重要。
摘要由CSDN通过智能技术生成

参考文档:https://mp.weixin.qq.com/s/Wxx-8b_36unlimLKBUl8zA

前两篇文章了解了如何用 pytorch 创建一个 CNN 网络,实现对 MNIST 数据集的图片分类。其中用到了一些函数,我们从字面意思也可以理解其功能。但是如何灵活自由的构建自己想要的网络结构呢?今天我们介绍一些在 Deep Learning 中经常听到的一些网络层,以及在 pytorch 中它们的使用方法。

1、常用的神经网络层

这里我们介绍一下在构建网络时常见的一些神经网络层,分别从卷积层,池化层,dropout,BN 层展开介绍。

卷积层
在这里插入图片描述
从上图的源码中我们可以看到,pytorch 提供了多种类型的卷积函数,后面的 TODO 也展示了 pytorch 开发团队在后面计划加入的一些层。

在我们平常的使用中,可能以二维卷积最常用,所以这里以它为例来进行介绍。

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

值得注意的几个点在于:
1.这是一个类,需要进行实例化后才能使用,我们使用的一般都是由这个类实例化出来的对象;
2.参数可以为 int 类型,也可以为 tuple,int 类型表示长宽都为同一个值;

接下来我们给一个例子看看:

>>> input = torch.randn(20, 16, 50, 100)

>>> # With square kernels and equal stride
>>> m = nn.Conv2d(16, 33, 3, stride=2)
>>> output = m(input)
>>> output.shape
torch.Size([20, 33, 24, 49])

>>> # non-square kernels and unequal stride and with padding
>>> m = nn.Conv2d(16, 33, (3, 5), stride=(2, 1), padding=(4, 2))
>>> output = m(input)
>>> output.shape
torch.Size([20, 33, 28, 100])

上面两个例子分别展示了参数为 int 和 tuple 的区别。大家也可以手推一下对输出的形状进行验证。

池化层
在这里插入图片描述
同样,这个图片截取了一部分源码中的示例,可以看到 pytorch 提供了很多类型的池化操作,我们以我们最常见的 max pooling 和 average pooling 为例进行介绍。

CLASS
torch.nn.MaxPool2d(kernel_size, stride=None, padding=0, dilation=1, return_indices=False, ceil_mode=False)
torch.nn.AvgPool2d(kernel_size, stride=None, padding=0, ceil_mode=False, count_include_pad=True)

同样也是一个 class,我们也是使用实例化出来的对象进行网络操作。而且参数也可以选择 int 和 tuple 两种类型。

这里给出一个源码 doc 中的例子:

>>> input = torch.randn(20, 16</
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值