PyTorch快速入门教程【小土堆】-神经网络-非线性激活

本文介绍了激活函数在神经网络中的作用,它引入非线性以提高模型的表达能力。讨论了ReLU和Sigmoid两种常用的激活函数,并通过PyTorch代码展示了它们在图像处理任务中的应用。此外,还提供了使用SummaryWriter进行可视化的过程。

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

1.激活函数

(1)作用

引入激活函数是为了增加神经网络模型的非线性。激活函数给神经元引入了非线性因素,使得神经网络可以任意逼近任何非线性函数,这样神经网络就可以应用到众多的非线性模型中,符合各种非线性曲线,符合各种特征,增强模型的泛化性。

(2)常用激活函数

(3) ReLU,Sigmoid

input(N,*) N 代表batch_size

output(N,*)N 代表batch_size

ReLU(inplace)
参数 inplace=true 运算结果替换input inplace=False input不变,运算结果直接给output,默认为false

2.代码示例

import torch
import torchvision.datasets
from torch import nn
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]])
input=torch.reshape(input,(-1,1,2,2))
#batch_size=-1即系统自己算batch_size ,channel=1,2*2
print(input.shape)
#构建神经网络

dataset=torchvision.datasets.CIFAR10("dataset",train=False,transform=torchvision.transforms.ToTensor())
dataloader=DataLoader(dataset,batch_size=64)




class Tudui(nn.Module):
    def __init__(self) -> None:
        super().__init__()
        self.relu1=ReLU()
        #inplace=true 运算结果替换input  inplace=False input不变,运算结果直接给output,默认为false
        self.sigmoid1=Sigmoid()

    def forward(self,input):
       # output=self.relu1(input) #数字形式举例
        output=self.sigmoid1(input) #图像形式举例
        return output
#类实例化,数字形式举例
tudui=Tudui()
output=tudui(input)
print(output)
#图像形式举例
tu=Tudui()
writer=SummaryWriter("logs_relu")
step=0
for data in dataloader:
    imgs,targets=data
    writer.add_images("input",imgs,step)
    output=tu(imgs)
    writer.add_images("output",output,step)
    step=step+1

writer.close()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值