Pytorch学习--神经网络--非线性激活
一、用法
torch.nn.ReLU
- 图像处理中的应用:在图像处理任务中,ReLU 激活函数能够增强特征提取的能力,使网络更好地捕捉图像的细节和边缘。这是因为 ReLU 对大部分负数响应为零,能在一定程度上减少网络计算量,并对特征层起到稀疏化的效果,避免信息的过度平滑。
torch.nn.Sigmoid
- 图像处理中的应用:在图像分类或二分类的场景中,Sigmoid 是常用的激活函数。尤其是在图像分割的二值掩膜生成中,Sigmoid 可以用于二分类(例如前景与背景的划分),以确定每个像素属于前景或背景的概率。
二、代码实现
对于inplace
的解释( inplace 默认为 False):
ReLU 的简单使用
import torch
from torch import nn
from torch.nn import ReLU
input = torch.tensor([[-1,1],
[-0.5,5]])
input = torch.reshape(input,(1,1,2,2))
class Mary(nn.Module):
def __init__(self):
super(Mary,self).__init__()
self.relu1 = ReLU()
def forward(self,x):
x = self.relu1(x)
return x
Yorelee = Mary()
output = Yorelee(input)
print(output)
输出:
tensor([[[[0., 1.],
[0., 5.]]]])
Sigmoid 的简单使用
import torch
import torchvision
from torch import nn
from torch.nn import Sigmoid
from torch.utils.data import DataLoader
from torch.utils.tensorboard import SummaryWriter
dataset = torchvision.datasets.CIFAR10("datasets",False,torchvision.transforms.ToTensor(),download=True)
dataloader = DataLoader(dataset,64)
class Mary(nn.Module):
def __init__(self):
super(Mary,self).__init__()
self.sigmoid1 = Sigmoid()
def forward(self,x):
x = self.sigmoid1(x)
return x
Yorelee = Mary()
writer = SummaryWriter("logs")
step = 0
for data in dataloader:
img,target = data
writer.add_images("input",img,step)
output = Yorelee(img)
writer.add_images("output",output,step)
step += 1
writer.close()
输出: