神经网络——非线性激活

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()可以展平数据

相关推荐
程序猿追4 天前
那个右下角的小数字怎么“卡”住我打字——我用 HarmonyOS 自己写了一个字数限制输入框
pytorch·华为·harmonyos
xiao5kou4chang6kai44 天前
MATLAB机器学习、深度学习--从数据预处理到模型训练
深度学习·机器学习·matlab·数据预处理
renhongxia14 天前
世界模型作为AGI落地底层底座的作用
人工智能·深度学习·生成对抗网络·自然语言处理·知识图谱·agi
计算机科研狗@OUC4 天前
(cvpr26) AIMDepth: Asymmetric Image-Event Mamba for Monocular Depth Estimation
人工智能·深度学习·计算机视觉
闵孚龙4 天前
《PyTorch 深度修炼》Dataset 和 DataLoader:数据如何喂给模型
人工智能·pytorch·python
β添砖java4 天前
深度学习(22)网络中的网络NiN
人工智能·深度学习
Kobebryant-Manba4 天前
深度学习时候d2l报错和使用问题
人工智能·深度学习
zhangfeng11334 天前
deepspeed zero3 结合 llamafactory 微调 ,save_only_model: true 导致保存时候出错
开发语言·python·深度学习
大模型最新论文速读4 天前
06-16 · LLM 最新论文速览
论文阅读·人工智能·深度学习·机器学习·自然语言处理
宝贝儿好4 天前
【LLM】第二章:HuggingFace入门学习
人工智能·深度学习·神经网络·学习·算法·自然语言处理