深度学习中常见的激活函数

前文介绍

我们在前面了解到了线性回归模型,其实我们可以把线性回归看成一个单个的神经元,它实际上就完成了两个步骤
1.对输入的特征的加权求和
2.将结果通过传递函数(或者激活函数)输出

这里我们提到了传递函数(或者激活函数),我们从线性回归的模型中可以看出,在回归问题上,输出并没有做激活,仅仅是直接输出

单个神将元所完成的任务就是对所有输入的特征乘以权重(w)、加上偏置(b)。例如有3个特征,分别为x1,x2,x3,那么线性回归模型所做的就是对这些输入特征乘以权重(w),加上偏置(b),使用激活函数激活后,然后输出
输出=激活函数(w1*x1+w2*x2+w3*x3+b)

激活函数

激活为了模拟生物大脑中神经元的工作原理,大脑中神经元会对接收到的信号进行考察,如果此信号满足一定条件,神经元才会将信号往下输出,繁殖就不往下传递了。激活函数的作用也类似,激活会为网络带来非线性,使得网络可以拟合非线性问题等更多复杂问题,大大增强了网络的拟合能力。

神经网络的作用有哪些呢

引入非线性关系:神经网络中的每一层都是由线性变换和激活函数组成的,激活函数的非线性特性使得神经网络能够学习和表示更为复杂的函数关系。

解决梯度消失问题:在深度神经网络中,梯度消失问题是一个普遍存在的问题。激活函数的非线性特性可以使得梯度在反向传播时更容易传递,从而缓解梯度消失问题。

去除对称性:在神经网络中,如果所有的神经元都使用相同的激活函数,那么神经网络会出现对称性的问题。而使用不同的激活函数可以打破对称性,使得神经网络可以更好地学习和表示不同的特征。

控制输出范围:有些激活函数可以控制输出的范围,例如sigmoid函数可以将输出限制在0到1之间,tanh函数可以将输出限制在-1到1之间。这些函数可以使得神经网络更加稳定和鲁棒。

模块导入

import torch
import numpy as np
import matplotlib.pyplot as plt
from torch import nn

ReLU激活函数

ReLU也叫修正线性单元,是目前应用最多的一个激活函数,在当前大部分模型中,都是用ReLU函数作为激活函数,其公式如下

f(x)=max(x,0)

ReLU激活函数的特点是,如果输入是大于0的,将其往后传递,反之则输出0,ReLU激活函数在实际应用中几乎是当前最受欢迎的激活函数,它是大多数神经网络的默认选择,在PyTorch中有内置的torch.relu()方法用来实现ReLU激活。

input=torch.randn(2)  # 生成随机数input
print(input)
output=torch.relu(input) #对输入激活得到输出
print(output)

绘图展示
x = np.linspace(-5, 5, 100)
y = np.maximum(0, x)plt.plot(x, y)
plt.title('ReLU Activation Function')
plt.xlabel('x')
plt.ylabel('f(x)')
plt.grid(True)
plt.show()

Sigmoid激活函数

sigmoid函数的输出可以认为是一个是或者否的概率值,常用来解决二分类问题

input=torch.randn(2)
print(input)
output=torch.sigmoid(input)
print(output)
number=-1
for i in output:number+=1if i>0.5:output[number]=1else:output[number]=0        
print(output)
绘图展示
def sigmoid(x):return 1 / (1 + np.exp(-x))x = np.linspace(-5, 5, 100)
y = sigmoid(x)plt.plot(x, y)
plt.title('Sigmoid Activation Function')
plt.xlabel('x')
plt.ylabel('f(x)')
plt.grid(True)
plt.show()

Tanh函数

其中心位置是0,其输出为(-1,1)。Tanh激活函数的一个常见的使用场景是对生成模型的输出做激活,从而使得输出规范为(-1,1)。PyTorch的内置函数torch.tanh()用来实现双曲正切激活函数

绘图展示
input=np.linspace(-6, 6,100)
input_tensor=torch.from_numpy(input)
output=torch.tanh(input_tensor)
output_numpy=output.numpy()
plt.plot(input,output_numpy)
plt.title('Tanh')
plt.xlabel('x')
plt.ylabel('y')
plt.grid(True)
plt.show()

LeakyReLU激活函数

input=np.linspace(-6,6,100)
input_tensor=torch.tensor(input)
m=nn.LeakyReLU(0) # 初始化LeakyReLU,参数表示负轴部分的斜率
output=m(input_tensor)
output_numpy=output.numpy()plt.plot(input,output_numpy)
plt.title('LeakyReLU')
plt.xlabel('x')
plt.ylabel('y')
plt.grid(True)
plt.show()

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

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

相关文章

一篇文章带你了解SpringBoot目录结构

前言 SpringBoot是整合Spring技术栈的一站式框架,是简化Spring技术栈的快速开发脚手架,是一个能够快速构建生产级别的Spring应用的工具。SpringBoot是目前流行的微服务框架,倡导“约定优于配置”,简化Spring项目搭建及开发过程。…

【lesson20】MySQL复合查询(1)基本查询回顾、多表查询和自连接

文章目录 基本查询回顾建表插入数据实例 多表查询建表插入数据实例 自连接建表插入数据实例 基本查询回顾 建表 插入数据 实例 查询工资高于500或岗位为MANAGER的雇员,同时还要满足他们的姓名首字母为大写的J 按照部门号升序而雇员的工资降序排序 使用年薪进行降…

[论文分享]TimeDRL:多元时间序列的解纠缠表示学习

论文题目:TimeDRL: Disentangled Representation Learning for Multivariate Time-Series 论文地址:https://arxiv.org/abs/2312.04142 代码地址:暂无 关键要点:多元时间序列,自监督表征学习,分类和预测 摘…

基于红外传感的野外变压站生物入侵检测系统(论文+源码)

1. 系统设计 本课题为基于红外传感的野外变压站生物入侵检测系统,主要是针对野外变压站生物入侵的问题进行设计,整个系统的框图如图经过上述的功能需求分析和各个关键模块的选型后,最终得到了如图2.1所示的,采用STC89C52单片机为…

Linux中history使用(过滤,显示时间,查找)

显示历史命令 history 显示最后几条执行命令 history 5 显示history记录中命令执行时间 export HISTTIMEFORMAT"%F %T " 显示命令中有某些内容的最后几条执行命令 history | grep key | tail -n 2

适用于车载电动升窗器的解决方案

升窗器是指避免车主忘记关窗的自动关窗装置,主要通过电子模块加认组合,利用主机上的芯片里面设定的程序完成检测功能,使自动升窗步骤顺利完成。 ■ 基于ACM32F403系列MCU ■ 高性价比软件控制方案,高算力 ■ MCU内置2路CAN总线&a…

【Unity 实用工具篇】✨| I2 Localization 实现本地化及多种语言切换,快速上手

前言【Unity 实用工具篇】| I2 Localization 实现本地化及多种语言切换,快速上手一、多语言本地化插件 I2 Localization1.1 介绍1.2 效果展示1.3 使用说明及下载二、插件资源简单介绍三、通过示例快速上手3.1 添加 Languages语种3.2 添加 Term资源3.3 静

应用容器化转型 - 容器镜像怎么做

「执笔人」品高股份 cloud native 资深架构师:继承 随着云计算和容器技术的迅速发展,越来越多的企业选择进行应用容器化转型,以提高应用交付效率和灵活性。在这个转型过程中,制作高效的容器镜像成为关键一环。 那么什么是容器镜…

Jmeter分布式性能测试,80%资深测试都会遇到这个坑!

在做后端服务器性能测试中,我们会经常听到分布式。哪你,是否了解分布式呢?今天,我们就来给大家讲讲,在企业实战中,如何使用分布式进行性能测试,实战过程中,又有哪些地方要特别注意&a…

【NeRF】体渲染

文章目录 体渲染 (Volume Rendering)吸收 (absorbing)放射 (emission)外散射 (out-scattering)内散射 (in-scattering) 体渲染方程NeRF中的体渲染NeRF体渲染方程NeRF体渲染方程计算 参考 借用了 参考文章1的图片,侵删。 关于体渲染的知识,主要借鉴 参考…

SQL指南:掌握日期函数来查询和管理数据

文章目录 1. 引言2. 建立数据库表2.1 建表语句2.2 数据插入 查询案例3.1 查询当前日期的订单3.2 查询过去一周内的订单3.3 查询明天的日期3.4 查询今年的订单3.5 查询特定月份的订单 总结 1. 引言 在数据库管理中,处理日期和时间是一项基本但重要的任务。本指南将通…

python 普通存款(单利)计算公式:

python 普通存款(单利)计算公式: 代码如下: #普通存款 单利计算公式:a:原值,n:计算年限,li:利率(小数), def danli(a,n,li):print("普通存款(单利)计…