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

1.激活函数

(1)作用

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

(2)常用激活函数

PyTorch快速入门教程【小土堆】-神经网络-非线性激活_第1张图片

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

你可能感兴趣的:(pytorch,神经网络,深度学习)