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()
相关推荐
Jackson_Li8 分钟前
Claude Code团队成员Thariq的Agent开发心得:Seeing like an agent
人工智能
卡尔AI工坊9 分钟前
2026年3月,我实操后最推荐的3个AI开源项目
人工智能·开源·ai编程
允许部分打工人先富起来10 分钟前
在node项目中执行python脚本
前端·python·node.js
IVEN_14 分钟前
Python OpenCV: RGB三色识别的最佳工程实践
python·opencv
骑着小黑马15 分钟前
Electron + Vue3 + AI 做了一个新闻生成器:从 0 到 1 的完整实战记录
前端·人工智能
haosend1 小时前
AI时代,传统网络运维人员的转型指南
python·数据网络·网络自动化
曲幽1 小时前
不止于JWT:用FastAPI的Depends实现细粒度权限控制
python·fastapi·web·jwt·rbac·permission·depends·abac
风象南9 小时前
我把大脑开源给了AI
人工智能·后端
Johny_Zhao11 小时前
OpenClaw安装部署教程
linux·人工智能·ai·云计算·系统运维·openclaw
飞哥数智坊11 小时前
我帮你读《一人公司(OPC)发展研究》
人工智能