tensorflow中常用的激活函数

article/2025/9/27 5:21:35

激活函数(activation function)运行时激活神经网络中某一部分神经元,将激活神经元的信息输入到下一层神经网络中。神经网络之所以能处理非线性问题,这归功于激活函数的非线性表达能力。激活函数需要满足数据的输入和输出都是可微的,因为在进行反向传播的时候,需要对激活函数求导。

在TensorFlow中也内置了许多的激活函数,安装好TensorFlow之后可以在tensorflow-->python-->ops-->nn.py文件中看到激活函数

接下来主要介绍一些常用的激活函数如:sigmoid、tanh、relu、dropout等。

1、sigmoid激活函数

sigmoid函数也被称为S型函数,它可以将整个实数区间映射到(0,1)区间,因此经常被用来计算概率,它也是在传统神经网络中被经常使用的一种激活函数。

    x = tf.constant([[-1,-2],[3,4],[5,6]],dtype=tf.float32)sess = tf.Session()print(sess.run(tf.sigmoid(x)))

sigmoid激活函数的优点:输出的映射区间(0,1)内单调连续,非常适合用作输出层,并且比较容易求导。

sigmoid激活函数的缺点:它具有软饱和性,即当输入x趋向于无穷的时候,它的导数会趋于0,导致很容易产生梯度消失。

  • log_sigmoid函数:对sigmoid函数求log,它将整个实数区间映射到了(负无穷,0)
import tensorflow as tf
import numpy as np
import matplotlib.pyplot as pltif __name__ == "__main__":x = tf.constant(np.arange(-10,10),dtype=tf.float32)sess = tf.Session()y = sess.run(tf.log_sigmoid(x))print(y)plt.plot(np.arange(-10,10),y)plt.show()

2、tanh激活函数

tanh是双曲正切函数,它将整个实数区间映射到了(-1,1),tanh函数也具有软饱和性。它的输出是以0为中心,tanh的收敛速度比sigmoid要快,由于存在软饱和性,所以tanh也存在梯度消失的问题。

    x = tf.constant(np.arange(-10,10),dtype=tf.float32)sess = tf.Session()y = sess.run(tf.tanh(x))print(y)plt.plot(np.arange(-10,10),y)plt.show()

3、relu激活函数

relu激活函数现在是最受欢迎的激活函数,经常被使用在神经网络中。relu函数的定义:f(x)=max(x,0)

    x = tf.constant(np.arange(-10,10),dtype=tf.float32)sess = tf.Session()y = sess.run(tf.nn.relu(x))print(y)plt.plot(np.arange(-10,10),y)plt.show()

relu函数在x<0时,输出始终为0。由于x>0时,relu函数的导数为1,所以relu函数能够在x>0时保持梯度不断衰减,从而缓解梯度消失的问题,还能加快收敛速度,还能是神经网络具有稀疏性表达能力,这也是relu激活函数能够被使用在深层神经网络中的原因。由于当x<0时,relu函数的导数为0,导致对应的权重无法更新,这样的神经元被称为"神经元死亡"。

在TensorFlow中还包括了relu函数的扩展函数如:relu6和crelu,除此之外还有leaky relu、PRelu、RRelu等。

  • relu6激活函数:定义min(max(features,0),6),也就是说它的取值区间被限定在了[0,6]之间。
    x = tf.constant(np.arange(-10,10),dtype=tf.float32)sess = tf.Session()y = sess.run(tf.nn.relu6(x))print(y)plt.plot(np.arange(-10,10),y)plt.show()

  • crelu激活函数:定义为[relu(x),relu(-x)]相对于relu(x),crelu的输出会增加一倍。
    x = tf.constant(np.arange(-10,10),dtype=tf.float32)sess = tf.Session()y = sess.run(tf.nn.crelu(x))print(y)

  • softplus激活函数:定义为log((e^x)+1),被称为平滑的relu。
    x = tf.constant(np.arange(-10,10),dtype=tf.float32)sess = tf.Session()y = sess.run(tf.nn.softplus(x))print(y)plt.plot(np.arange(-10,10),y)plt.show()

  • leak_relu激活函数:leak_relu激活函数会给x<0,一个斜率,而不是将所有x<0都输出0,默认斜率是0.2,x>0的部分仍然输出是x,即斜率为1,保持不变。
    x = tf.constant(np.arange(-10,10),dtype=tf.float32)sess = tf.Session()y = sess.run(tf.nn.leaky_relu(x,alpha=0.2))print(y)plt.plot(np.arange(-10,10),y)plt.show()

4、dropout函数

dropout函数会以一个概率为keep_prob来决定神经元是否被抑制。如果被抑制,该神经元输出为0,如果不被抑制则该神经元的输出为输入的1/keep_probbe倍,每个神经元是否会被抑制是相互独立的。神经元是否被抑制还可以通过调节noise_shape来调节,当noise_shape[i] == shape(x)[i],x中的元素是相互独立的。如果shape(x)=[k,l,m,n](k表示数据的个数,l表示数据的行数,m表示数据的列,n表示通道),当noise_shape=[k,1,1,n],表示数据的个数与通道是相互独立的,但是与数据的行和列是有关联的,即要么都为0,要么都为输入的1/keep_prob倍。

    x = tf.constant(np.array([np.arange(-5,5)]),dtype=tf.float32)sess = tf.Session()#元素之间互不干扰y = sess.run(tf.nn.dropout(x,keep_prob=0.5))print(y)#元素之间互不干扰y = sess.run(tf.nn.dropout(x,keep_prob=0.5,noise_shape=[1,10]))print(y)#元素之间存在关联y = sess.run(tf.nn.dropout(x,keep_prob=0.5,noise_shape=[1]))print(y)


http://chatgpt.dhexx.cn/article/682bG2yP.shtml

相关文章

激活函数简介

1、什么是激活函数&#xff1f; 单一神经元模型展示&#xff1a; 神经网络中的每个神经元节点接受上一层神经元的输出值作为本神经元的输入值&#xff0c;并将输入值传入下一层&#xff0c;输入层神经元节点会将属性值直接传递给下一层&#xff08;隐层或输出层&#xff09;。…

激活函数maxout

激活函数maxout 系列文章:maxout函数相对于其他的激活函数有很大的区别,可以看做是在神经网络中激活函数的地方加入一个激活函数层。 maxout可以看做是一个可学习的分段线性函数,因为可学习所以是需要参数的,而且参数是可以通过反向传播来学习的。因为参数量的增大,势必导…

激活函数总结

一、引入激活函数的目的 图1&#xff1a;带一层隐藏层的神经网络 先看一个只含一层隐藏层的神经网络&#xff0c;如图1所示。输入为 n 条样本X&#xff0c;隐藏层H的权重和偏置分别为W_h&#xff0c;b_o&#xff0c;输出层O的权重和偏置分别为W_o&#xff0c;b_o。输出层的计算…

机器学习(14)——激活函数

文章目录 1 定义2 激活函数的必要性3 常用的激活函数3.1 单位阶跃函数3.2 Logistic函数3.3 Tanh函数3.4 ReLU函数3.5 LeakyReLU函数3.6 Softmax函数 4 选择恰当的激活函数 1 定义 激活函数 (Activation functions) 对于人工神经网络模型去学习、理解非常复杂和非线性的函数来说…

GELU激活函数

最近看bert论文&#xff0c;发现用的是GELU激活函数&#xff0c;找出来看看 论文&#xff1a;GAUSSIAN ERROR LINEAR UNITS (GELUS)项目&#xff1a;https://github.com/hendrycks/GELUs ABSTRACT 本文提出了高斯误差线性单元(GELU)&#xff0c;一个高性能的神经网络激活函数…

神经网络中的激活函数

文章目录 引言什么是激活函数&#xff1f;为什么我们要在神经网络中使用激活函数&#xff1f;线性激活函数非线性激活函数1. Sigmoid&#xff08;逻辑激活函数&#xff09;2. Tanh&#xff08;双曲正切激活函数&#xff09;3. ReLU&#xff08;线性整流单元&#xff09;激活函数…

激活函数简述

1、激活函数的作用 1.不带激活函数的单层感知机是一个线性分类器&#xff0c;不能解决线性不可分的问题 2.合并后的多个感知器本质上还是一个线性分类器&#xff0c;还是解决不了非线性的问题 3.激活函数是用来加入非线性因素的&#xff0c;提高神经网络对模型的表达能力&a…

常用激活函数

文章目录 前言为什么需要激活函数什么样的函数可以做激活函数什么样的函数是好的激活函数常用激活函数sigmoidtanhReLULeaky ReLURandomized Leaky ReLUMaxout 参考文章 前言 今天这篇文章对一些常用激活函数做一下总结吧。在神经网络中激活函数还是很重要的&#xff0c;并且熟…

激活函数

深度学习中的激活函数导引 我爱机器学习(52ml.net) 2016年8月29日 0 作者&#xff1a;程程 链接&#xff1a;https://zhuanlan.zhihu.com/p/22142013 来源&#xff1a;知乎 著作权归作者所有&#xff0c;已联系作者获得转载许可。 深度学习大讲堂致力于推送人工智能&#xff0c…

详解激活函数

文章目录 0️⃣前言1️⃣Sigmoid2️⃣tanh3️⃣Relu4️⃣Leaky Relu5️⃣Softmax6️⃣总结 0️⃣前言 用了这么久的激活函数&#xff0c;抽空总结一下吧&#xff0c;不然总是忘记&#xff0c;这里介绍常用到的sigmoid&#xff0c;tanh&#xff0c;relu&#xff0c;leaky relu&…

常用激活函数(激励函数)理解与总结

引言 学习神经网络的时候我们总是听到激活函数这个词&#xff0c;而且很多资料都会提到常用的激活函数&#xff0c;比如Sigmoid函数、tanh函数、Relu函数。那么我们就来详细了解下激活函数方方面面的知识。本文的内容包括几个部分&#xff1a; 什么是激活函数&#xff1f;激活…

常用激活函数总结(深度学习)

前言   学习神经网络的时候我们总是听到激活函数这个词&#xff0c;而且很多资料都会提到常用的激活函数&#xff0c;比如Sigmoid函数、tanh函数、Relu函数。在经过一段时间学习后&#xff0c;决定记录个人学习笔记。 一、激活函数 1.激活函数定义&#xff1f;   在神经网…

【概念梳理】激活函数

一、引言 常用的激活函数如下&#xff1a; 1、Sigmoid函数 2、Tanh函数 3、ReLU函数 4、ELU函数 5、PReLU函数 6、Leaky ReLU函数 7、Maxout函数 8、Mish函数 二、激活函数的定义 多层神经网络中&#xff0c;上层节点的输出和下层节点的输入之间具有一个函数关系&#xff0c;…

一文搞懂激活函数

目录 1、什么是激活函数 2、激活函数的用途&#xff08;为什么需要激活函数&#xff09;&#xff1f; 3、常见的激活函数介绍 3.1 Sigmoid函数 3.2 tanh函数 3.3.RelU函数 3.4 Leaky ReLU函数 和 PReLU 函数 --- ReLU 变体的提出 3.5 ELU (Exponential Linear Units) 函…

激活函数(Relu,sigmoid,Tanh,softmax)详解

目录 1 激活函数的定义 2 激活函数在深度学习中的作用 3 选取合适的激活函数对于神经网络有什么样的重要意义 4 常用激活函数 4.1 Relu 激活函数 4.2 sigmoid 激活函数 4.3 Tanh激活函数 4.4 softmax 激活函数 1 激活函数的定义 激活函数&#xff08;Activation Funct…

激活函数(Activation Function)

目录 1 激活函数的概念和作用 1.1 激活函数的概念 1.2 激活函数的作用 1.3 通俗的理解一下激活函数(图文结合) 1.3.1 无激活函数的神经网络 1.3.2 带激活函数的神经网络 2 神经网络梯度消失与梯度爆炸 2.1 简介梯度消失与梯度爆炸 2.2 梯度不稳定问题 2.3 产生梯度消…

常用的激活函数合集(详细版)

目录 一、定义以及作用 二、常用激活函数解析 1、Sigmoid函数 1.1 公式 1.2 对应的图像 1.3 优点与不足之处 1.4 对应pytorch的代码 2、Tanh函数 2.1 公式 2.2 对应的图像 2.3 优点与不足之处 2.4 对应pytorch的代码 3、ReLU 3.1 公式 3.2 对应的图像 3.3 优点与不…

优化算法——FTRL

ctr预测中&#xff0c;单个样本由向量x表示&#xff0c;w是模型参数&#xff0c;预测样本x被点击的概率psigmoid(w * x)&#xff0c;sigmoid(x) 1/(1exp(x))。样本label为{0, 1}表示是否被点击。模型损失函数为交叉熵损失&#xff1a; L -ylog - (1-y)log(1-p)&#xff0c;梯…

【深度学习】优化算法-Ftrl

脑图 代码实现 DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSEVersion 2, December 2004Copyright (C) 2004 Sam Hocevar <samhocevar.net>Everyone is permitted to copy and distribute verbatim or modified copies of this license document, and changing it is all…

谷歌13年提出来的类似于lr的算法 - ftrl论文翻译(七)

论文链接&#xff1a;https://static.googleusercontent.com/media/research.google.com/zh-CN//pubs/archive/41159.pdf 概要 预测广告点击率&#xff08;CTR&#xff09;是一个巨大的规模学习问题&#xff0c;是在线广告业数十亿美元的核心问题。 我们从最近的实验中选择出…