torch.nn中的非线性激活介绍合集——Pytorch中的非线性激活

1、nn.ELU

基本语法:

class torch.nn.ELU(alpha=1.0, inplace=False)

按元素应用 Exponential Linear Unit (ELU) 函数。
论文中描述的方法:通过指数线性单元 (ELU) 进行快速准确的深度网络学习。
ELU 定义为:
E L U ( x ) = { x , i f x > 0 α ∗ ( e x p ( x ) − 1 ) , i f x ≤ 0 ELU(x)=\{\begin{array}{c} x, & \mathrm{if~x > 0}\\ \alpha * (exp(x)-1), & \mathrm{if x \le 0} \end{array} ELU(x)={x,α(exp(x)1),if x>0ifx0

Parameters 参数:

  • alpha (float) – ELU 公式的 α α α值。默认值:1.0
  • Inplace(bool) – 可以选择就地执行作。默认值: False

Shape: 形状:

  • Input::(∗),其中 ∗表示任意数量的维度。
  • Output:(∗),与输入的形状相同。

在这里插入图片描述
Examples: 例子:

>>> m = nn.ELU()
>>> input = torch.randn(2)
>>> output = m(input)

2、ReLU

基本语法:

class torch.nn.ReLU(inplace=False)

按元素应用修正的线性单元函数。
R e L U ( x ) = ( x ) + = m a x ( 0 , x ) ReLU(x)=(x)^+=max(0,x) ReLU(x)=(x)+=max(0,x)

Parameters 参数:

  • Inplace (bool) – 可以选择就地执行作。默认值: False

参数说明:

  • inplace=False
import torch
from torch import nnm = nn.ReLU(inplace=False)
input = torch.randn(2)
print(input)
output = m(input)
print(input)
print(output)

此时,输入Input并未改变,而是复制了一份原始输入并在该复制上进行非线性激活:

tensor([ 1.6213, -0.0794])
tensor([ 1.6213, -0.0794])
tensor([1.6213, 0.0000])
  • inplace=True
import torch
from torch import nnm = nn.ReLU(inplace=True)
input = torch.randn(2)
print(input)
output = m(input)
print(input)
print(output)

此时,直接对原始输入数据进行非线性激活:

tensor([-0.3541, -0.6384])
tensor([0., 0.])
tensor([0., 0.])

Shape: 形状:

  • Input: (∗) ,其中 ∗ 表示任意数量的维度。
  • Output: (∗),与输入的形状相同。

在这里插入图片描述
Examples: 例子:

  >>> m = nn.ReLU()>>> input = torch.randn(2)>>> output = m(input)An implementation of CReLU - https://arxiv.org/abs/1603.05201>>> m = nn.ReLU()>>> input = torch.randn(2).unsqueeze(0)>>> output = torch.cat((m(input), m(-input)))

3、Sigmoid

基本语法:

class torch.nn.Sigmoid(*args, **kwargs)

按元素应用 Sigmoid 函数。

S i g m o i d ( x ) = σ ( x ) = 1 1 + e x p ( − x ) Sigmoid(x)=\sigma(x)=\frac{1}{1+exp(-x)} Sigmoid(x)=σ(x)=1+exp(x)1

Shape: 形状:

  • Input: (∗),其中 ∗ 表示任意数量的维度。
  • Output: (∗),与输入的形状相同。

在这里插入图片描述
Examples: 例子:

>>> m = nn.Sigmoid()
>>> input = torch.randn(2)
>>> output = m(input)

4、Tanh

基本语法:

class torch.nn.Tanh(*args, **kwargs)

按元素应用 Hyperbolic Tangent (Tanh) 函数。
T a n h ( x ) = t a n h ( x ) = e x p ( x ) − e x p ( − x ) e x p ( x ) + e x p ( − x ) Tanh(x)=tanh(x)=\frac{exp(x)-exp(-x)}{exp(x)+exp(-x)} Tanh(x)=tanh(x)=exp(x)+exp(x)exp(x)exp(x)

Shape: 形状:

  • Input: (∗),其中 ∗ 表示任意数量的维度。
  • Output: (∗),与输入的形状相同。

在这里插入图片描述
Examples: 例子:

>>> m = nn.Tanh()
>>> input = torch.randn(2)
>>> output = m(input)

5、LeakyReLU

基本语法:

class torch.nn.LeakyReLU(negative_slope=0.01, inplace=False)

按元素应用 LeakyReLU 函数。
L e a k y R e L U ( x ) = m a x ( 0 , x ) + n e g a t i v e s l o p e ∗ m i n ( 0 , x ) LeakyReLU(x)=max(0,x)+negative_slope*min(0,x) LeakyReLU(x)=max(0,x)+negativeslopemin(0,x)
or
L e a k y R e L U ( x ) = { x , i f x ≥ 0 n e g a t i v e s l o p e × x , o t h e r w i s e LeakyReLU(x)=\{\begin{array}{c}x, & \mathrm{if~x\ge0}\\ negative_slope \times x, & \mathrm{otherwise}\end{array} LeakyReLU(x)={x,negativeslope×x,if x0otherwise

Parameters 参数

  • negative_slope(float)– 控制负斜率的角度 (用于负输入值)。默认值:1e-2
  • Inplace (bool)– 可以选择就地执行作。默认值: False

Shape: 形状:

  • 输入: (∗) 其中 * 表示任意数量的附加维度
  • 输出: (∗),与输入形状相同

在这里插入图片描述
Examples: 例子:

>>> m = nn.LeakyReLU(0.1)
>>> input = torch.randn(2)
>>> output = m(input)

5、Softplus

基本语法:

class torch.nn.Softplus(beta=1.0, threshold=20.0)

按元素应用 Softplus 函数。
S o f t p l u s ( x ) = 1 β ∗ log ⁡ ( 1 + e x p ( β ∗ x ) ) Softplus(x)=\frac{1}{\beta}*\log(1+exp(\beta*x)) Softplus(x)=β1log(1+exp(βx))

SoftPlus 是 ReLU 函数的平滑近似值,可用于将机器的输出限制为始终为正。
为了数值稳定性,当 时 i n p u t × β > t h r e s h o l d input×β>threshold input×β>threshold,实现恢复为线性函数。

Parameters 参数

  • beta(float) – Softplus 公式的值 β \beta β。默认值:1
  • threshold(float)– 高于此值的值将恢复为线性函数。默认值:20

参数说明:

  • threshold( β \beta β=1)
    i n p u t × β ≤ t h r e s h o l d input×β \le threshold input×βthreshold时:
import torch
from torch import nnm = nn.Softplus()
input = torch.randn(2)
print(input)output = m(input)
print(output)
tensor([-0.2053,  0.3776])
tensor([0.5958, 0.8997])

可以验证: S o f t p l u s ( − 0.2053 ) = 1 1 ∗ log ⁡ ( 1 + e x p ( 1 ∗ ( − 0.2053 ) ) ) = 0.595756... Softplus(-0.2053)=\frac{1}{1}*\log(1+exp(1*(-0.2053)))=0.595756... Softplus(0.2053)=11log(1+exp(10.2053)))=0.595756...
S o f t p l u s ( 0.3776 ) = 1 1 ∗ log ⁡ ( 1 + e x p ( 1 ∗ ( 0.3776 ) ) ) = 0.899665... Softplus(0.3776)=\frac{1}{1}*\log(1+exp(1*(0.3776)))=0.899665... Softplus(0.3776)=11log(1+exp(10.3776)))=0.899665...

i n p u t × β > t h r e s h o l d input×β > threshold input×β>threshold时:

import torch
from torch import nnm = nn.Softplus()
input = torch.tensor([30.])
print(input)output = m(input)
print(output)
tensor([30.])
tensor([30.])

此时恢复为线性函数

Shape: 形状:

  • Input: (∗) ,其中 ∗ 表示任意数量的维度。
  • Output: (∗) ,与输入的形状相同。

在这里插入图片描述

Examples: 例子:

>>> m = nn.Softplus()
>>> input = torch.randn(2)
>>> output = m(input)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/76496.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Databend Cloud Dashboard 全新升级:直击痛点,释放数据价值

自 Databend Cloud 上线以来,我们一直致力于为用户提供高效的数据处理与可视化体验。早期,我们在工作区的“图表”区域推出了轻量级可视化功能,支持积分卡、饼图、柱状图和折线图四种展示方式。这些功能简单易用,基本满足了用户对…

Android Fresco 框架扩展模块源码深度剖析(四)

Android Fresco 框架扩展模块源码深度剖析 一、引言 在 Android 开发领域,图片处理一直是一个重要且具有挑战性的任务。Fresco 作为 Facebook 开源的强大图片加载框架,在图片的加载、缓存和显示等方面已经提供了非常完善的功能。然而,为了满…

蓝桥杯最后十天冲刺 day 2 双指针的思想

双指针思想介绍 双指针(Two Pointers)是一种在数组或链表等线性结构中常用的算法技巧,通过使用两个指针(索引或引用)以不同的速度或方向遍历数据结构,从而高效解决问题。双指针通常用于优化暴力解法&#…

Axure 使用笔记

1.Axure如何制作页面弹窗 https://blog.csdn.net/SDTechnology/article/details/143948691 2.axure 怎么点击按钮打开新页面 (1)新建交互 (2)单击是触发 (3)选择打开链接 (4)选择…

STM32实现一个简单电灯

新建工程的步骤 建立工程文件夹,Keil中新建工程,选择型号工程文件夹里建立Start、Library、User等文件夹,复制固件库里面的文件到工程文件夹工程里对应建立Start、Library、User等同名称的分组,然后将文件夹内的文件添加到工程分组…

html5炫酷图片悬停效果实现详解

html5炫酷图片悬停效果实现详解 这里写目录标题 html5炫酷图片悬停效果实现详解项目介绍技术栈核心功能实现1. 页面布局2. 图片容器样式3. 炫酷悬停效果缩放效果倾斜效果模糊效果旋转效果 4. 悬停文字效果5. 性能优化6. 响应式设计 项目亮点总结 项目介绍 本文将详细介绍如何使…

Playwright与Browser Use:领略AI赋能UI自动化测试的魔法魅力

目录 Browser Use是什么? Playwright简介 框架设计的核心目标与原则 Playwright 在 UI 自动化测试中的优势 如何高效拦截错误 实现视频录制 UI自动化框架设计的挑战 测试框架的结构与模块化设计 自动化测试不是银弹 走进Browser Use 横空出世的背景与意义…

Uniapp 实现微信小程序滑动面板功能详解

文章目录 前言一、功能概述二、实现思路三、代码实现总结 前言 Uniapp 实现微信小程序滑动面板功能详解 一、功能概述 滑动面板是移动端常见的交互组件,通常用于在页面底部展开内容面板。本文将介绍如何使用 Uniapp 开发一个支持手势滑动的底部面板组件&#xff0…

【FAQ】HarmonyOS SDK 闭源开放能力 —Push Kit(12)

1.问题描述: pushdeviceid的长度是固定的吗? 解决方案: 在鸿蒙系统中,设备ID的长度是固定的。 2.问题描述: 通过REST API三方推送IM类消息,如何实现应用处于前台时不展示三方推送通知。 解决方案&…

【小兔鲜】day02 Pinia、项目起步、Layout

【小兔鲜】day02 Pinia、项目起步、Layout 1. Pinia2. 添加Pinia到Vue项目3. 案例:Pinia-counter基础使用3.1 Store 是什么?3.2 应该在什么时候使用 Store? 4. Pinia-getters和异步action4.1 getters4.2 action如何实现异步 1. Pinia Pinia 是 Vue 的专…

Android学习之计算器app(java + 详细注释 + 源码)

运行结果: 基础的四则运算: 可能会出现的问题以及解决方法: 问题1:出现多个操作符。 例子:12 解决方法: 在用户点击操作符之后,去检查之前的最后一位,如果最后一位也是操作符的话…

GMap.NET + WPF:构建高性能 ADS-B 航空器追踪平台

ADS-B 简介 ADS - B(Automatic Dependent Surveillance - Broadcast,广播式自动相关监视)是一种先进的航空监视技术。它依靠飞机上的机载设备,自动收集诸如飞机的位置、高度、速度、航向等关键数据,并周期性地以广播的…

关于testng.xml无法找到类的问题

问题:testng.xml添加测试类的时候飘红 解决办法: 1.试图通过自动生成testng.xml插件去解决,感觉也不是这个问题,没有尝试; 2.以为是创建包的方式不对,重新删除后新建--还是找不到 想新建类的时候发现从m…

数据在内存中存储(C语言)

文章目录 前言一、整数在内存中的存储1.1 计算机存储数据的基本单位示例代码 1.2 无符号整数的存储1.3 有符号整数的存储(补码)示例代码 二、大小端字节序和字节序判断2.1 什么是大小端?示例代码 2.2 为什么会有大小端?2.3 字节序…

Python爬虫第2节-网页基础和爬虫基本原理

目录 一、网页基础 1.1 网页的组成 1.2 网页的结构 1.3 节点树及节点间的关系 1.4 选择器 二、爬虫的基本原理 2.1 爬虫概述 2.2 能抓怎样的数据 2.3 JavaScript 渲染页面 一、网页基础 使用浏览器访问网站时,我们会看到各式各样的页面。你是否思考过&…

python-leetcode 64.在排序数组中查找元素的第一个和最后一个位置

题目: 给一个按照非递减顺序排列的整数数组nums,和一个目标值target,请找出给定目标值在数组中的开始位置和结束位置。 如果数组中不存在目标值target,返回[-1,-1] 方法一:二分查找 直观的思路肯定是从前往后遍历一遍。用两个变量记录第一次和最后一次…

分享一些新版GPT-4o使用方式!能多模态生图!

目前GPT-4o的整体测评,真的很惊艳。 不知道又有多少人因为OpenAI的这次更新而失业,当然只要AI用得好,会有更多人因之而受益!很多人表示不知道怎么用,对于门外汉来说,4o似乎有点高端。 今天就给大家介绍几…

软件工程面试题(二十四)

1、连接池的原理 j2ee 服务器启动时会建立一定数量的池连接,并一直维持不少于此数量的池连接。当客户端程序需要连接时,吃驱动程序会返回一个未使用的池连接并将其标记为忙。如果当前 没有空闲连接,池驱动就建立一定新的 连接 2、用javascript编写脚本小程序,实现点击全选…

Android:Dialog的使用详解

Android中Dialog的使用详解 Dialog(对话框)是Android中常用的UI组件,用于临时显示重要信息或获取用户输入。 1. 基本Dialog类型 1.1 AlertDialog(警告对话框) 最常用的对话框类型,可以设置标题、消息、…

arinc818 fpga单色图像传输ip

arinc818协议支持的常用线速率如下图 随着图像分辨率的提高,单lane的速率无法满足特定需求,一种方式是通过多个LANE交叉的去传输图像,另外一种是通过降低图像的带宽,即通过只传单色图像达到对应的效果 程序架构如下图所示&#x…