神经网络——非线性激活

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

相关推荐
Ivanqhz6 小时前
激活函数在 Transformer 中的作用及各种变体简述
java·linux·数据库·人工智能·深度学习
晚安code8 小时前
大模型是什么?讲透 Token、上下文窗口、Temperature 和 MoE
人工智能·深度学习·机器学习
Zguigo9 小时前
【CUDA6】CUDA Stream 是什么,为什么 CUDA 是异步执行,如何正确测量 GPU 时间以及多个任务如何重叠执行
人工智能·pytorch·深度学习
梦帮科技11 小时前
vLLM / TensorRT-LLM 极限推理:PagedAttention 细粒度物理页表管理与连续批处理(Continuous Batching)实战
数据结构·人工智能·分布式·python·深度学习·算法·vllm
v:PLLucky2013 小时前
农作物病虫害检测识别系统
深度学习·scrapy·算法·百度·微信公众平台
医学图像分割大王13 小时前
【医学图像分割模块】StarNet —— 星操作(元素级乘法)—— 把"相加"换成"相乘"的轻量卷积块
深度学习
在所不辞兄13 小时前
【零基础学智能仿真-38】从规则矩形到带孔薄板:Gmsh 网格与 FEniCSx 联合求解
人工智能·深度学习·算法·机器学习·工程仿真
架构师那点事儿14 小时前
将 HuggingFace 自己的英译中模型迁移到 ONNX
人工智能·python·深度学习
梦帮科技15 小时前
可证伪性工程测评与生产部署红蓝对抗:压力测试、长尾鲁棒性与全生命周期安全质检守卫
人工智能·深度学习·神经网络·安全·机器学习·自然语言处理·压力测试
这张生成的图像能检测吗16 小时前
(论文速读)DefectDiffu:基于一致性建模的少样本工业缺陷图像生成
人工智能·深度学习·计算机视觉·异常检测·少样本学习·扩散生成