激活函数及其梯度

本文详细介绍了神经网络中的三种常见激活函数:Sigmoid、Tanh和ReLU,包括它们的数学表达式、导数及代码示例。重点讲解了这些函数如何引入非线性增强网络学习能力,并展示了它们在实际计算中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、激活函数及其梯度

一、简介

  1. 在神经网络中引入激活函数的目的是:我们的数据绝大部分都是非线性的,而在一般的神经网络中,计算都是线性的。而引入激活函数就是在神经网络中引入非线性,强化网络的学习能力。

二、常见的激活函数

1、Sigmoid函数

  1. 公式:f(x)=σ(x)=11+e−xf(x)=\sigma(x)=\frac{1}{1+e^{-x}}f(x)=σ(x)=1+ex1
    在这里插入图片描述
  2. 导数:f(x)′=e−x(1+e−x)2=f(x)∗(1−f(x))f(x)' = \frac{e^{-x}}{(1+e^{-x})^2}=f(x)*(1-f(x))f(x)=(1+ex)2ex=f(x)(1f(x))
    在这里插入图片描述
  3. 代码
a = torch.linspace(-100,100,10)
print(a)
print(torch.sigmoid(a))
# 输出:
# tensor([-100.0000,  -77.7778,  -55.5556,  -33.3333,  -11.1111,   11.1111,
#          33.3333,   55.5555,   77.7778,  100.0000])
# tensor([0.0000e+00, 1.6655e-34, 7.4564e-25, 3.3382e-15, 1.4945e-05, 9.9999e-01,
#        1.0000e+00, 1.0000e+00, 1.0000e+00, 1.0000e+00])

2、Tanh函数

  1. 公式:f(x)=tanh(x)=ex−e−xex+e−x=2∗sigmoid(2x)−1f(x)=tanh(x)=\frac{e^{x}-e^{-x}}{e^{x}+e^{-x}}=2*sigmoid(2x)-1f(x)=tanh(x)=ex+exexex=2sigmoid(2x)1
    在这里插入图片描述
  2. 导数:tanh(x)′=1−(ex−e−x)2(ex+e−x)2=1−tanh(x)2tanh(x)'=1-\frac{(e^{x}-e^{-x})^2}{(e^{x}+e^{-x})^2}=1-tanh(x)^2tanh(x)=1(ex+ex)2(exex)2=1tanh(x)2
    在这里插入图片描述
  3. 代码
a = torch.linspace(-1,1,10)
print(a)
print(torch.tanh(a))
# 输出
# tensor([-1.0000, -0.7778, -0.5556, -0.3333, -0.1111,  0.1111,  0.3333,  0.5556,
#          0.7778,  1.0000])
# tensor([-0.7616, -0.6514, -0.5047, -0.3215, -0.1107,  0.1107,  0.3215,  0.5047,
#          0.6514,  0.7616])

3、ReLU函数

  1. 公式:f(x)={0   for  x  <  0x  for  x  ⩾  0 f\left( x \right) =\begin{cases} 0\,\,\, for\,\,x\,\,<\,\,0\\ x\,\, for\,\,x\,\,\geqslant \,\,0\\ \end{cases} f(x)={0forx<0xforx0
    在这里插入图片描述

  2. 导数:f(x)={0   for  x  <  01  for  x  ⩾  0 f\left( x \right) =\begin{cases} 0\,\,\, for\,\,x\,\,<\,\,0\\ 1\,\, for\,\,x\,\,\geqslant \,\,0\\ \end{cases} f(x)={0forx<01forx0

  3. 代码

import torch
from torch.nn import functional as F


a = torch.linspace(-1,1,10)
print(a)
print(torch.relu(a))
print(F.relu(a))   #两种调用函数形式

# tensor([-1.0000, -0.7778, -0.5556, -0.3333, -0.1111,  0.1111,  0.3333,  0.5556,
#         0.7778,  1.0000])
# tensor([0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.1111, 0.3333, 0.5556, 0.7778,
#         1.0000])
# tensor([0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.1111, 0.3333, 0.5556, 0.7778,
#         1.0000])
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值