PyTorch——非线性激活(5)

非线性激活函数的作用是让神经网络能够理解更复杂的模式和规律。如果没有非线性激活函数,神经网络就只能进行简单的加法和乘法运算,没法处理复杂的问题。

非线性变化的目的就是给我们的网络当中引入一些非线性特征


Relu 激活函数


Relu处理图像

python 复制代码
# 导入必要的库
from os import close
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

# 加载CIFAR-10测试数据集,将图像转换为Tensor格式
dataset = torchvision.datasets.CIFAR10("./data", train=False, download=True,
                                       transform=torchvision.transforms.ToTensor())

# 创建数据加载器,设置批量大小为64
dataloader = DataLoader(dataset, batch_size=64)

# 定义神经网络模型TY
class TY(nn.Module):
    def __init__(self):
        super(TY, self).__init__()
        # 定义ReLU激活函数层
        self.relu1 = ReLU()
        # 定义Sigmoid激活函数层(当前未在forward中使用)
        self.sigmod1 = Sigmoid()

    def forward(self, input):
        # 前向传播过程,对输入数据应用ReLU激活函数
        output = self.relu1(input)
        return output

# 实例化模型
ty = TY()

# 创建TensorBoard写入器,用于可视化数据
writer = SummaryWriter("./logs_relu")

# 初始化步数计数器
step = 0
# 遍历数据加载器中的每个批次
for data in dataloader:
    # 获取图像数据和对应的标签
    imgs, target = data
    # 向TensorBoard添加原始输入图像
    writer.add_images("input", imgs, step)
    # 将图像数据输入模型,得到经过ReLU处理后的输出
    output = ty(imgs)
    # 向TensorBoard添加处理后的输出图像
    writer.add_images("output", output, step)
    # 步数计数器递增
    step += 1

# 关闭TensorBoard写入器,释放资源
writer.close()

ReLU处理图像,效果不是很明显


Sigmoid激活函数

python 复制代码
from os import close
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

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

dataloader = DataLoader(dataset,batch_size=64)

class TY(nn.Module):
    def __init__(self):
        super(TY,self).__init__()
        self.relu1=ReLU()
        self.sigmoid1 = Sigmoid()

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

ty = TY()

writer = SummaryWriter("./logs_relu")

step = 0
for data in dataloader:
    imgs,target=data
    writer.add_images("input",imgs,step)
    output = ty(imgs)
    writer.add_images("output",output,step)
    step+=1

writer.close()
相关推荐
qq_386218991 小时前
Gemini生成的自动搜索和下载论文的python脚本
开发语言·python
vx_vxbs662 小时前
【SSM电影网站】(免费领源码+演示录像)|可做计算机毕设Java、Python、PHP、小程序APP、C#、爬虫大数据、单片机、文案
java·spring boot·python·mysql·小程序·php·idea
双翌视觉2 小时前
双翌全自动影像测量仪:以微米精度打造智能化制造
人工智能·机器学习·制造
编程小白_正在努力中3 小时前
神经网络深度解析:从神经元到深度学习的进化之路
人工智能·深度学习·神经网络·机器学习
无风听海3 小时前
神经网络之经验风险最小化
人工智能·深度学习·神经网络
音视频牛哥3 小时前
轻量级RTSP服务的工程化设计与应用:从移动端到边缘设备的实时媒体架构
人工智能·计算机视觉·音视频·音视频开发·rtsp播放器·安卓rtsp服务器·安卓实现ipc功能
该用户已不存在3 小时前
在 Gemini CLI 中使用 Gemini 3 Pro 实操指南
人工智能·ai编程·gemini
烤汉堡4 小时前
Python入门到实战:post请求+cookie+代理
爬虫·python
东皇太星4 小时前
ResNet (2015)(卷积神经网络)
人工智能·神经网络·cnn
luod4 小时前
Python异常链
python