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()
相关推荐
在所不辞兄4 小时前
【零基础学智能仿真-53】多智能体协作——有限元自动化实战从工程需求到可审核的仿真报告
人工智能·深度学习·神经网络·机器学习·有限元
张张123y4 小时前
后端第一课:输入 URL 后发生了什么?我用手写 Socket 把全链路跑通了
python·websocket·ai·socket·url·后端开发
AI Coder 码农王6 小时前
AgentScope Java v2 第3课,从 ReActAgent 到 HarnessAgent
人工智能
格物致胜工业数智技术6 小时前
明治EOS系列传感器技术解析:精密制造高反光金属件在位检测
人工智能·制造
甲维斯6 小时前
DeepSeek 新版还是难评!
人工智能
晨间晓7 小时前
图片细节丰富不丰富?用华为云码道开发 OpenCV 纹理复杂度分析工具
人工智能·opencv·华为云
全栈弄潮儿7 小时前
Python实战第7期:字典与集合
后端·python·编程语言
2603_965148117 小时前
电商选品调研:通过关键词搜索API获取市场热销商品,结合商品详情API分析竞品卖点与定价
开发语言·数据库·人工智能·python·信息可视化
镜象科技7 小时前
什么是好的校园AI心理健康解决方案服务商?从中外校园心理服务的一天说起
人工智能
Geeys7 小时前
拼多多单品推广完整方案(可直接落地)
大数据·人工智能