神经网络——非线性激活

1 非线性激活

1.1 几种常见的非线性激活:

ReLU (Rectified Linear Unit)线性整流函数

Sigmoid

1.2代码实战:

1.2.1 ReLU

python 复制代码
import torch
from torch import nn
from torch.nn import ReLU

input=torch.tensor([[1,-0.5],
                    [-1,3]])

input=torch.reshape(input,(-1,1,2,2))
print(input.shape)

class Tudui(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)
  • inplace 参数:是否在原来位置上更新

1.2.2 Sigmoid

python 复制代码
import torch
import torchvision
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))
print(input.shape)

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

class Tudui(nn.Module):
    def __init__(self):
        super(Tudui,self).__init__()
        self.sigmoid1 = Sigmoid()

    def forward(self, input):
        output = self.sigmoid1(input)
        return output

tudui=Tudui()

writer = SummaryWriter("logs_Non-linear")
step = 0

for data in dataloader:
    imgs, targets = data
    writer.add_images("input", imgs, step)
    output = tudui(imgs)
    writer.add_images("output",output, step)
    step = step + 1

writer.close()

非线性变化的主要目的在于给网络引入非线性的特征。非线性特征越多,越能训练出符合各种曲线或特征的模型,从而提高模型的泛化能力。

2 线性层及其他层介绍:

2.1简要介绍nn模块里的各种层:

  • Normalization Layers正则化层

    正则化可以加快神经网络的训练速度,用的比较少,不作介绍,自己看文档

  • Recurrent Layers:

    一般用于文字识别,自己看文档。

    

  • Transformer Layers:

  • Linear Layers:

  • Dropout Layers:

    在训练过程中,随机将输入张量的部分元素清零。主要作用是防止过拟合。

  • Saprse Layers: 

    用于自然语言处理。

  • Distance Functions:

    计算两个值之间的距离

  • Loss Functions:

    计算误差

2.2 Linear Layers讲解:

Linear Layers的weight和bias的初始化是正态分布,可参考官方文档

2.3代码实战:

python 复制代码
import torch
import torchvision
from torch import nn
from torch.nn import Linear
from torch.utils.data import DataLoader

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

class Tudui(nn.Module):
    def __init__(self):
        super(Tudui,self).__init__()
        self.linear1 = Linear(196608,10)

    def forward(self, input):
        output = self.linear1(input)
        return output

tudui=Tudui()

for data in dataloader:
    imgs, targets = data
    print(imgs.shape)
    output=torch.flatten(imgs)
    print(output.shape)
    output = tudui(output)
    print(output.shape)

torch.flatten()可以展平数据

相关推荐
m沐沐1 小时前
【深度学习】dlib 人脸关键点检测
人工智能·深度学习·opencv·计算机视觉·pycharm·人脸识别·关键点检测
逻辑君2 小时前
认知神经科学研究报告【20260112】
人工智能·深度学习·数学建模·量子计算
Lambert-Wu2 小时前
常用激活函数总结
人工智能·深度学习·机器学习
pokemen邪14 小时前
PyTorch KernelAgent 源码解读 ---(6)--- Composer
人工智能·pytorch·composer
卡梅德生物科技小能手6 小时前
卡梅德生物:一文读懂核心炎症靶点TNF(肿瘤坏死因子)
经验分享·深度学习·生活
依然范特东6 小时前
动手学深度学习笔记--数据操作、线性代数
人工智能·笔记·深度学习
感性的随9 小时前
【机器人 / 强化学习】LWD(Learning while Deploying)机器人持续进化的强化学习框架
人工智能·深度学习·机器人
依然范特东9 小时前
深度学习入门学习笔记--感知机、神经网络
笔记·深度学习·学习
卡梅德生物科技小能手10 小时前
卡梅德生物:一文读懂免疫调控核心靶点IL-2(白细胞介素-2)
经验分享·深度学习·生活
解局易否结局10 小时前
鸿蒙三方库生态与实战:从安装到发布全链路指南
深度学习·华为·harmonyos