【学习笔记】神经网络——非线性激活

本文详细介绍了ReLU(线性整流函数)在深度学习中的作用,包括其工作原理和inplace参数。并通过与Sigmoid函数的对比,展示了它们在处理图像时的效果,最后通过TensorBoard展示了使用案例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

激活函数是深度学习模型的重要成分,目的是将线性输入转换为非线性。常见的激活函数有ReLU、Sigmoid等

  1. 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值