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()
相关推荐
m0_734949793 小时前
MySQL如何配置定时清理过期备份文件_find命令与保留周期策略
jvm·数据库·python
Tutankaaa4 小时前
从被动接受到主动挑战:知识竞赛如何重塑学习价值
人工智能·经验分享·笔记·学习
m0_514520574 小时前
MySQL索引优化后性能没提升_通过EXPLAIN查看索引命中率
jvm·数据库·python
H Journey4 小时前
Python 国内pip install 安装缓慢
python·pip·install 加速
Jmayday5 小时前
机器学习基本理论
人工智能·机器学习
ZhengEnCi5 小时前
01b-上下文向量与信息瓶颈
人工智能
王_teacher5 小时前
机器学习 矩阵求导 完整公式+严谨推导
人工智能·线性代数·考研·机器学习·矩阵·线性回归
码以致用5 小时前
DeerFlow Memory架构
人工智能·ai·架构·agent
ting94520005 小时前
从零构建大模型实战:数据处理与 GPT-2 完整实现
人工智能
学点程序5 小时前
Manifest:帮个人 AI Agent 降低模型成本的开源路由器
人工智能·开源