Bootstrap

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()

输出:
在这里插入图片描述
在这里插入图片描述

;