激活函数是深度学习模型的重要成分,目的是将线性输入转换为非线性。常见的激活函数有ReLU、Sigmoid等
-
ReLU 函数
线性整流函数(Rectified Linear Unit, ReLU),又称修正线性单元,是一种人工神经网络中常用的激活函数(activation function),通常指代以斜坡函数及其变种为代表的非线性函数
当input>0,output=input
当input<0,output=0,截断为0
torch.nn.ReLU(inplace=False)
ReLU的输入参数中inplace 是什么?
示例代码:
import torch
import torchvision
from torch.nn import ReLU, Sigmoid
from torch.utils.data import DataLoader
from torch.utils.tensorboard import SummaryWriter
input=torch.tensor([[1,-0.5],
[-1,3]])
dataloader = DataLoader(dataset,batch_size=64)
#创建一个神经网络
class Tudui(torch.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)
"""
tensor([[1., 0.],
[0., 3.]])
可以从官网上看到ReLU是小于0截断
"""
2.ReLU对图像的处理不是很明显,使用Sigmoid函数查看图片处理效果
代码如下:
import torch
import torchvision
from torch.nn import ReLU, Sigmoid
from torch.utils.data import DataLoader
from torch.utils.tensorboard import SummaryWriter
input=torch.tensor([[1,-0.5],
[-1,3]])
dataset=torchvision.datasets.CIFAR10("./datasets",train=False,download=True,transform=torchvision.transforms.ToTensor())
dataloader = DataLoader(dataset,batch_size=64)
#创建一个神经网络
class Tudui(torch.nn.Module):
def __init__(self):
super(Tudui,self).__init__()
self.relu1 = ReLU() #非线性激活
self.sigmoid1=Sigmoid()
def forward(self,input):
# output = self.relu1(input)
output = self.sigmoid1(input)
return output
tudui=Tudui()
# output=tudui(input)
# print(output)
"""
tensor([[1., 0.],
[0., 3.]])
可以从官网上看到ReLU是小于0截断
"""
writer=SummaryWriter('./logs_sigmoid')
step=0
for data in dataloader:
imgs,targets = data
writer.add_images("input",imgs,step)
output=tudui(imgs)
writer.add_images('output_sigmoid',output,step)
step+=1
writer.close()
查看tensorboard