当前位置:首页 » 编程语言 » python的sigmoid函数

python的sigmoid函数

发布时间: 2022-04-24 13:28:04

‘壹’ sigmoid函数优缺点求告知

函数:

优点:从图片上


(1)可以看到sigmoid函数处处连续 ->便于求导;

(2)可以将函数值的范围压缩到[0,1]->可以压缩数据,且幅度不变。

(3)便于前向传输

缺点:

(1)在趋向无穷的地方,函数值变化很小,容易缺失梯度,不利于深层神经网络的反馈传输

(2)幂函数还是比较难算的

(3)函数均值不为0,当输出大于0时,则梯度方向将大于0,也就是说接下来的反向运算中将会持续正向更新;同理,当输出小于0时,接下来的方向运算将持续负向更新。

‘贰’ 为什么我的scipy库里没有expit() 就是那个sigmoid函数

神经网络中用到的sigmoid函数,即S函数在python里可以直接调用,但没想到耗费我很长时间。

最开始,我安装了SciPy v1.0.1;

但是尝试各种调用方式

from scipy import special
from scipy.special import expit
都显示找不到expit模块。网络和Google都未果。

后来卸载了SciPy重装了SciPy v1.0.0 就成功了……果然不要贪图新版本……

‘叁’ Sigmoid函数的介绍

Sigmoid函数是一个在生物学中常见的S型的函数,也称为S形生长曲线。

‘肆’ sigmoid函数作用

1.
sigmoid函数单调连续,输出范围有限,所以数据在传递的过程中不容易发散
2.
由于输出范围为(0, 1),所以可以在二分类的模型做为输出层,输出表示概率。
3.
求导容易,其导数可由自身表示:f’(x)=f(x)(1-f(x))

‘伍’ Sigmoid函数有哪些

Sigmoid函数是一个在生物学中常见的S型函数,也称为S型生长曲线。[1]在信息科学中,由于其单增以及反函数单增等性质,Sigmoid函数常被用作神经网络的阈值函数,将变量映射到0,1之间。
中文名
Sigmoid函数
外文名
Sigmoid function
别名
S型生长曲线
用途
用作神经网络的阈值函数
Sigmoid函数由下列公式定义

其对x的导数可以用自身表示:

前16个Sigmoid函数的数值为

‘陆’ python 神经网络库有哪些

学习人工智能时,我给自己定了一个目标--用Python写一个简单的神经网络。为了确保真得理解它,我要求自己不使用任何神经网络库,从头写起。多亏了Andrew Trask写得一篇精彩的博客,我做到了!下面贴出那九行代码:

在这篇文章中,我将解释我是如何做得,以便你可以写出你自己的。我将会提供一个长点的但是更完美的源代码。
首先,神经网络是什么?人脑由几千亿由突触相互连接的细胞(神经元)组成。突触传入足够的兴奋就会引起神经元的兴奋。这个过程被称为“思考”。

我们可以在计算机上写一个神经网络来模拟这个过程。不需要在生物分子水平模拟人脑,只需模拟更高层级的规则。我们使用矩阵(二维数据表格)这一数学工具,并且为了简单明了,只模拟一个有3个输入和一个输出的神经元。

我们将训练神经元解决下面的问题。前四个例子被称作训练集。你发现规律了吗?‘?’是0还是1?

你可能发现了,输出总是等于输入中最左列的值。所以‘?’应该是1。
训练过程
但是如何使我们的神经元回答正确呢?赋予每个输入一个权重,可以是一个正的或负的数字。拥有较大正(或负)权重的输入将决定神经元的输出。首先设置每个权重的初始值为一个随机数字,然后开始训练过程:
取一个训练样本的输入,使用权重调整它们,通过一个特殊的公式计算神经元的输出。
计算误差,即神经元的输出与训练样本中的期待输出之间的差值。
根据误差略微地调整权重。
重复这个过程1万次。

最终权重将会变为符合训练集的一个最优解。如果使用神经元考虑这种规律的一个新情形,它将会给出一个很棒的预测。
这个过程就是back propagation。

计算神经元输出的公式
你可能会想,计算神经元输出的公式是什么?首先,计算神经元输入的加权和,即

接着使之规范化,结果在0,1之间。为此使用一个数学函数--Sigmoid函数:

Sigmoid函数的图形是一条“S”状的曲线。

把第一个方程代入第二个,计算神经元输出的最终公式为:

你可能注意到了,为了简单,我们没有引入最低兴奋阈值。
调整权重的公式
我们在训练时不断调整权重。但是怎么调整呢?可以使用“Error Weighted Derivative”公式:

为什么使用这个公式?首先,我们想使调整和误差的大小成比例。其次,乘以输入(0或1),如果输入是0,权重就不会调整。最后,乘以Sigmoid曲线的斜率(图4)。为了理解最后一条,考虑这些:
我们使用Sigmoid曲线计算神经元的输出
如果输出是一个大的正(或负)数,这意味着神经元采用这种(或另一种)方式
从图四可以看出,在较大数值处,Sigmoid曲线斜率小
如果神经元认为当前权重是正确的,就不会对它进行很大调整。乘以Sigmoid曲线斜率便可以实现这一点
Sigmoid曲线的斜率可以通过求导得到:

把第二个等式代入第一个等式里,得到调整权重的最终公式:

当然有其他公式,它们可以使神经元学习得更快,但是这个公式的优点是非常简单。
构造Python代码
虽然我们没有使用神经网络库,但是将导入Python数学库numpy里的4个方法。分别是:
exp--自然指数
array--创建矩阵
dot--进行矩阵乘法
random--产生随机数
比如, 我们可以使用array()方法表示前面展示的训练集:

“.T”方法用于矩阵转置(行变列)。所以,计算机这样存储数字:

我觉得我们可以开始构建更优美的源代码了。给出这个源代码后,我会做一个总结。
我对每一行源代码都添加了注释来解释所有内容。注意在每次迭代时,我们同时处理所有训练集数据。所以变量都是矩阵(二维数据表格)。下面是一个用Python写地完整的示例代码。

结语
试着在命令行运行神经网络:

你应该看到这样的结果:

我们做到了!我们用Python构建了一个简单的神经网络!
首先神经网络对自己赋予随机权重,然后使用训练集训练自己。接着,它考虑一种新的情形[1, 0, 0]并且预测了0.99993704。正确答案是1。非常接近!
传统计算机程序通常不会学习。而神经网络却能自己学习,适应并对新情形做出反应,这是多么神奇,就像人类一样。

‘柒’ python sigmoid函数在哪个模块

Sigmoid函数,即f(x)=1/(1+e-x).神经元的非线性作用函数. 人工神经网络的学习算法-BP算法 神经网络的学习是基于一组样本进行的,它包括输入和输出

‘捌’ 如何用python把一个很大的数归约到0-1之间

您好,使用sigmoid函数就行,表达式为sigmoid(x)=1/(1+exp(x))

‘玖’ 谁能解释下sigmoid 函数

Sigmoid函数,即f(x)=1/(1+e-x).神经元的非线性作用函数.
人工神经网络的学习算法-BP算法
神经网络的学习是基于一组样本进行的,它包括输入和输出(这里用期望输出表示),输入和输出有多少个分量就有多少个输入和输出神经元与之对应.最初神经网络的权值(Weight)和阈值(Threshold)是任意给定的,学习就是逐渐调整权值和阈值使得网络的实际输出和期望输出一致.
我们假设样本有P个,输入层有N个神经元,隐含层有K个神经元,输出层有M个神经元.Xj为输入层神经元j的输入,Hj为隐含层神经元j的输出,Fj为输出层神经元j的实际输出,Rj为输出层神经元j的期望输出,前一层的输出即为后一层的输入.Whji是输入层神经元i与隐含层神经元j之间的连接权值,Thj是隐含神经元j的阈值,Woji是隐含层神经元i与输出层神经元j之间的连接权值,Toj是输出神经元j的阈值.神经元的非线性作用函数是Sigmoid函数,即f(x)=1/(1+e-x).

参考来源:http://www.zybang.com/question/.html

‘拾’ python sigmoid函数属于哪个库

Sigmoid函数,即f(x)=1/(1+e-x).神经元的非线性作用函数. 人工神经网络的学习算法-BP算法 神经网络的学习是基于一组样本进行的,它包括输入和输出(这里用期望输出表示),输入和输出有多少个分量就有多少个输入和输出神经元与之对应.最初神经网络

热点内容
c数据库压缩 发布:2025-05-17 11:39:22 浏览:960
安卓手机如何连接音响功放 发布:2025-05-17 11:37:48 浏览:958
破解exe加密视频 发布:2025-05-17 11:23:41 浏览:976
我的世界服务器圈太大了怎么办 发布:2025-05-17 11:15:21 浏览:614
便宜的免费云服务器 发布:2025-05-17 11:08:50 浏览:777
中国顶级dhcp解析服务器地址 发布:2025-05-17 11:06:27 浏览:34
php转义html 发布:2025-05-17 11:04:00 浏览:567
钢筋笼加密区规范 发布:2025-05-17 10:59:50 浏览:4
我的世界网易手机版主播服务器房号 发布:2025-05-17 10:40:59 浏览:227
竖编译 发布:2025-05-17 09:56:08 浏览:229