神经网络——非线性激活

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

相关推荐
夏天是冰红茶9 小时前
DINO原理详解
人工智能·深度学习·机器学习
weixin_4093831214 小时前
在kaggle训练Qwen/Qwen2.5-1.5B-Instruct 通过中二时期qq空间记录作为训练数据 训练出中二的模型为目标 第一次训练 好像太二了
人工智能·深度学习·机器学习·qwen
声声codeGrandMaster14 小时前
AI之模型提升
人工智能·pytorch·python·算法·ai
路长冬15 小时前
深度学习评估指标:
深度学习
matlabgoodboy16 小时前
程序代做python代编程matlab代码设计plc深度学习java编写C++代写
python·深度学习·matlab
deephub17 小时前
1小时微调 Gemma 3 270M 端侧模型与部署全流程
人工智能·深度学习·大语言模型·gemma
Coding茶水间17 小时前
基于深度学习的草莓健康度检测系统演示与介绍(YOLOv12/v11/v8/v5模型+Pyqt5界面+训练代码+数据集)
图像处理·人工智能·深度学习·yolo·目标检测·机器学习·计算机视觉
weisian15117 小时前
入门篇--人工智能发展史-6-AI视觉的“注意力革命”,大模型的核心动力--Transformer
人工智能·深度学习·transformer
weisian15119 小时前
入门篇--人工智能发展史-4-点燃深度学习革命的那把火,AlexNet
人工智能·深度学习