Pytorch深度学习-----神经网络之非线性激活的使用(ReLu、Sigmoid)

news/2024/12/2 11:27:07/

系列文章目录

PyTorch深度学习——Anaconda和PyTorch安装
Pytorch深度学习-----数据模块Dataset类
Pytorch深度学习------TensorBoard的使用
Pytorch深度学习------Torchvision中Transforms的使用(ToTensor,Normalize,Resize ,Compose,RandomCrop)
Pytorch深度学习------torchvision中dataset数据集的使用(CIFAR10)
Pytorch深度学习-----DataLoader的用法
Pytorch深度学习-----神经网络的基本骨架-nn.Module的使用
Pytorch深度学习-----神经网络的卷积操作
Pytorch深度学习-----神经网络之卷积层用法详解
Pytorch深度学习-----神经网络之池化层用法详解及其最大池化的使用


文章目录

  • 系列文章目录
  • 一、非线性激活是什么?
  • 二、ReLU函数
    • 1.ReLU函数介绍
    • 2.使用Relu函数处理矩阵
  • 三、Sigmoid函数
    • 1.Sigmoid函数介绍
    • 2.使用Sigmoid函数处理CIFAR10数据集


一、非线性激活是什么?

非线性激活是神经网络中的一种操作,它被用于引入非线性特性到神经网络的输出中。在神经网络中,线性操作如加法和乘法只能产生线性变换,而非线性激活函数则允许网络学习非线性关系

在每个神经元的输出中应用非线性激活函数,可以使得神经网络能够学习和表示更加复杂的函数关系。这是因为非线性激活函数可以对输入数据进行非线性映射,从而增加了网络的表达能力。

常见的非线性激活函数包括sigmoid函数、ReLU函数、tanh函数等。

英文为:Non-linear Activations;官网解释为:Non-linear Activations

二、ReLU函数

1.ReLU函数介绍

首先先查看官网对其解释:如下图所示
在这里插入图片描述
在这里插入图片描述
可以见到有一个参数inplace,布尔类型,所以具有两种情况
当inplace 为True时,会将输入数据进行替换;当inplace 为False时,输入数据不进行替换

即:input=-1 经过 Relu(input,inplace=True)后,input=0;
input=-1 经过 Relu(input,inplace=False)后,input=-1;

即将小于0的数据替换为0
由官网的图像可以推测,Relu函数的表达式为
在这里插入图片描述
因为input=-1时小于0,故替换为0.

其次:relu函数也是分段线性函数。

2.使用Relu函数处理矩阵

import torch# 准备数据
input = torch.tensor([[1,-1],[-2,3]])# 搭建自己的一个神经网络
class lgl(torch.nn.Module):def __init__(self):super(lgl, self).__init__()# 默认inplace参数为Falseself.relu1 = torch.nn.ReLU()def forward(self,input):output = self.relu1(input)return output# 实例化
l = lgl()
output = l(input)
print(input)
print(output)

输出结果如下:

tensor([[ 1, -1],[-2,  3]])
tensor([[1, 0],[0, 3]])

验证结果,由Relu函数的特点,进行relu后会将小于等于0的数值替换为0,大于0的数值保持不变,故上述结果正确。同时inplace默认是False,故输入不会改变。

下面将inplace=True

import torch# 准备数据
input = torch.tensor([[1,-1],[-2,3]])# 搭建自己的一个神经网络
class lgl(torch.nn.Module):def __init__(self):super(lgl, self).__init__()# 同时将inplace参数设置为Trueself.relu1 = torch.nn.ReLU(inplace=True)def forward(self,input):output = self.relu1(input)return output# 实例化
l = lgl()
output = l(input)
print(input)
print(output)

输出结果如下:

tensor([[1, 0],[0, 3]])
tensor([[1, 0],[0, 3]])

三、Sigmoid函数

1.Sigmoid函数介绍

首先先查看官网,对其解释如下图所示

在这里插入图片描述
函数表达式如下
在这里插入图片描述
函数取值范围为(0,1)

2.使用Sigmoid函数处理CIFAR10数据集

代码如下:

import torch
import torchvision
from torch.utils.data import DataLoader
from torch.utils.tensorboard import SummaryWriter# 准备cifar10数据集
test_set = torchvision.datasets.CIFAR10("dataset",train=False,transform=torchvision.transforms.ToTensor(),download=True)
# 加载器
dataloader = DataLoader(test_set,batch_size=64)# 搭建自己的神经网络
class Lgl(torch.nn.Module):def __init__(self):super(Lgl, self).__init__()self.sigmoid1 = torch.nn.Sigmoid()def forward(self, input):output = self.sigmoid1(input)return output# 实例化
l = Lgl()# 进行sigmoid函数化,并在TensorBoard中显示
writer = SummaryWriter("logs_test")
step = 0
for data in dataloader:imgs, target = data# 未进行sigmoid函数前图片显示writer.add_images("input",imgs,step)output = l(imgs)# 进行sigmoid函数化后图片显示writer.add_images("output",output,step)step = step + 1writer.close()

对比如下图所示:
在这里插入图片描述
在这里插入图片描述


http://www.ppmy.cn/news/997139.html

相关文章

VS下开发Qt应用环境搭建

VS下开发Qt应用环境搭建 版本说明环境搭建步骤QT新增组件重新安装QTVS中的配置 版本说明 vs2019 QT5.14 我之前是按照QT基础组件的安装,但是这个安装只是最基础的组件,如果想要在VS中使用QT,还得安装其他组件,下面的安装流程、 …

java另外启动线程播放wav声音

搜了一个mp3文件,首先转成wav 用mp3Towav.sh脚本 #!/bin/bashfolder/home/qzc/workspace/ for file in $(find "$folder" -type f -iname "*.mp3") doname$(basename "$file" .mp3)dir$(dirname "$file")echo ffmpeg -i &…

华为OD机试真题 JavaScript 实现【输入整型数组和排序标识,对其元素按照升序或降序进行排序】【牛客练习题】

目录 一、题目描述二、输入描述三、输出描述四、解题思路五、JavaScript算法源码 华为OD机试 2023B卷题库疯狂收录中,刷题点这里 刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目&#x…

Jenkins工具系列 —— 启动 Jenkins 服务报错

错误显示 apt-get 安装 Jenkins 后,自动启动 Jenkins 服务报错。 排查原因 直接运行jenkins命令 发现具体报错log:Failed to start Jetty或Failed to bind to 0.0.0.0/0.0.0.0:8080或Address already in use 说明:这里提示的是8080端口号…

【图论】无向图连通性(tarjan算法)

割边&#xff1a;dfn[u]<low[v] 割点&#xff1a;dfn[u]<low[v] (若为根节点&#xff0c;要有两个v这样的点) 一.知识点&#xff1a; 1.连通&#xff1a; 在图论中&#xff0c;连通性是指一个无向图中的任意两个顶点之间存在路径。如果对于图中的任意两个顶点 u 和 v&…

2023年精选出来的几道sql语句优化面试题

问&#xff1a;慢 SQL 语句的几种常见诱因? 在这个时候&#xff0c;就可以说&#xff0c;面试官&#xff0c;您好&#xff0c;我觉得SQL慢出现的原因可以分为以下几种&#xff0c;切记&#xff0c;不要回答自己模糊不清的&#xff0c;没法自圆其说的即使知道你也别回答&#x…

宝塔安装nginx重启提示缺少libjemalloc.so.2

错误内容&#xff1a; Nginx配置规则错误: /www/server/nginx/sbin/nginx: error while loading shared libraries: libjemalloc.so.2: cannot open shared object file: No such file or directory 1.查看nginx启动命令需要哪些依赖: ldd /www/server/nginx/sbin/nginx 2.缺…

【MFC】01.MFC框架-笔记

基本概念 MFC Microsoft Fundation class 微软基础类库 框架 基于Win32 SDK进行的封装 属性&#xff1a;缓解库关闭 属性->C/C/代码生成/运行库/MTD 属性->常规->MFC的使用&#xff1a;在静态库中使用MFC&#xff0c;默认是使用的共享DLL&#xff0c;运行时库 SD…