这篇文章是神经网络系列之MaxPool2d及非线性激活函数ReLU、Sigmoid的使用
一、前言
首先介绍一下MaxPool,根据以下内容,可以初步了解各个参数的含义。
其中dilation的意思可见图所示conv_arithmetic/README.md at master · vdumoulin/conv_arithmetic · GitHub
ceil_mode=True时,代表最大池化时,不足卷积核的地方的值也取最大,不舍弃。 ceil_mode=False时,代表最大池化时,不足卷积核的地方的值不取值,舍弃。
二、代码
1.样例
代码如下(示例):
import torch
from torch import nn
from torch.nn import MaxPool2d
input=torch.tensor([[1,2,0,3,1],
[0,1,2,3,1],
[1,2,1,0,0],
[5,2,3,1,1],
[2,1,0,1,1]])
input=torch.reshape(input,[-1,1,5,5])
print(input)
class Tudui(nn.Module):
def __init__(self):
super(Tudui, self).__init__()
self.maxpool1=MaxPool2d(kernel_size=3,ceil_mode=True)
def forward(self,input):
output=self.maxpool1(input)
return output
tudui=Tudui()
output=tudui(input)
print(output)
报错:
改正措施:在输入矩阵后面加上dtype=torch.float32,变成浮点类型,即可
input=torch.tensor([[1,2,0,3,1],
[0,1,2,3,1],
[1,2,1,0,0],
[5,2,3,1,1],
[2,1,0,1,1]],dtype=torch.float32)
成果展示:
2.激活函数ReLU
简介:所谓激活函数(Activation Function),就是在人工神经网络的神经元上运行的函数,负责将神经元的输入映射到输出端。激活函数给神经元引入了非线性因素,使得神经网络可以任意逼近任何非线性函数,这样神经网络就可以应用到众多的非线性模型中
ReLU激活函数使用方法及对应曲线如下图所示。
代码如下(示例):
import torch
from torch import nn
from torch.nn import ReLU
input=torch.tensor([[1,-0.5],
[-1,3]])
input=torch.reshape(input,[-1,1,2,2]) #防止报维度的错
print(input.shape)
class Tudui(nn.Module):
def __init__(self):
super(Tudui, self).__init__()
self.relu1=ReLU()
def forward(self,input):
output=self.relu1(input)
return output
tudui=Tudui()
output=tudui(input)
print(output)
成果展示:
3、激活函数Sigmoid的使用
简介:它和ReLU的使用方式一样,就是曲线有些区别,下图是它的曲线图,以及用它写的函数,做的成果展示。
成果展示:
三、总结
以上内容均是参考土堆老师视频做的笔记。