
- 提出者
- 莱布尼茨(G.W.Leibniz)
- 表示法
- 列表法、图像法、解析法
- 三要素
- 自变量、因变量、对应法则
- 应用学科
- 数学、计算机科学等
- 中文名
- 函数
- 外文名
- function
- 提出时间
- 17世纪
- 表达式
- y=f(x)
-
函数指针和指针函数用法和区别
2018-05-24 08:11:10函数指针和指针函数,在学习 C 语言的时候遇到这两个东西简直头疼,当然还有更头疼的,比如什么函数指针函数、指针函数指针、数组指针、指针数组、函数指针数组等等,描述越长其定义就越复杂,当然理解起来就越难,...前言
函数指针和指针函数,在学习 C 语言的时候遇到这两个东西简直头疼,当然还有更头疼的,比如什么函数指针函数、指针函数指针、数组指针、指针数组、函数指针数组等等,描述越长其定义就越复杂,当然理解起来就越难,特别是刚开始学习这门语言的童鞋,估计碰到这些东西就已经要崩溃了,然后好不容易死记硬背下来应付考试或者面试,然后过了几天发现,又是根本不会用,也不知道该在哪些地方用,这就尴尬了。
今天这里只讲两个相对简单的,其实上面说那些太复杂的东西也真的很少用,即便是用了理解起来很麻烦,所以莫不如先深刻理解这两个比较容易的,并且项目中比较常用到。正文
先来看看两者的定义以及说明。
指针函数
定义
指针函数,简单的来说,就是一个返回指针的函数,其本质是一个函数,而该函数的返回值是一个指针。
声明格式为:*类型标识符 函数名(参数表)这似乎并不难理解,再进一步描述一下。
看看下面这个函数声明:int fun(int x,int y);
这种函数应该都很熟悉,其实就是一个函数,然后返回值是一个 int 类型,是一个数值。
接着看下面这个函数声明:int *fun(int x,int y);
这和上面那个函数唯一的区别就是在函数名前面多了一个*号,而这个函数就是一个指针函数。其返回值是一个 int 类型的指针,是一个地址。
这样描述应该很容易理解了,所谓的指针函数也没什么特别的,和普通函数对比不过就是其返回了一个指针(即地址值)而已。
指针函数的写法
int *fun(int x,int y); int * fun(int x,int y); int* fun(int x,int y);
这个写法看个人习惯,其实如果*靠近返回值类型的话可能更容易理解其定义。
示例
(由于本人习惯于 Qt 中进行开发,所以这里为了方便,示例是在 Qt 工程中写的,其语法是一样的,只是输出方式不同)
来看一个非常简单的示例:typedef struct _Data{ int a; int b; }Data; //指针函数 Data* f(int a,int b){ Data * data = new Data; data->a = a; data->b = b; return data; } int main(int argc, char *argv[]) { QApplication a(argc, argv); //调用指针函数 Data * myData = f(4,5); qDebug() << "f(4,5) = " << myData->a << myData->b; return a.exec(); }
输出如下:
f(4,5) = 4 5
注意:在调用指针函数时,需要一个同类型的指针来接收其函数的返回值。
不过也可以将其返回值定义为 void*类型,在调用的时候强制转换返回值为自己想要的类型,如下://指针函数 void* f(int a,int b){ Data * data = new Data; data->a = a; data->b = b; return data; } 调用: Data * myData = static_cast<Data*>(f(4,5));
其输出结果是一样的,不过不建议这么使用,因为强制转换可能会带来风险。
函数指针
定义
函数指针,其本质是一个指针变量,该指针指向这个函数。总结来说,函数指针就是指向函数的指针。
声明格式:类型说明符 (*函数名) (参数)
如下:int (*fun)(int x,int y);
函数指针是需要把一个函数的地址赋值给它,有两种写法:
fun = &Function; fun = Function;
取地址运算符&不是必需的,因为一个函数标识符就表示了它的地址,如果是函数调用,还必须包含一个圆括号括起来的参数表。
调用函数指针的方式也有两种:
x = (*fun)(); x = fun();
两种方式均可,其中第二种看上去和普通的函数调用没啥区别,如果可以的话,建议使用第一种,因为可以清楚的指明这是通过指针的方式来调用函数。当然,也要看个人习惯,如果理解其定义,随便怎么用都行啦。
示例
int add(int x,int y){ return x+y; } int sub(int x,int y){ return x-y; } //函数指针 int (*fun)(int x,int y); int main(int argc, char *argv[]) { QApplication a(argc, argv); //第一种写法 fun = add; qDebug() << "(*fun)(1,2) = " << (*fun)(1,2) ; //第二种写法 fun = ⊂ qDebug() << "(*fun)(5,3) = " << (*fun)(5,3) << fun(5,3); return a.exec(); }
输出如下:
(*fun)(1,2) = 3 (*fun)(5,2) = 2 2
上面说到的几种赋值和调用方式我都分别使用了,其输出结果是一样的。
二者区别
通过以上的介绍,应该都能清楚的理解其二者的定义。那么简单的总结下二者的区别:
定义不同
指针函数本质是一个函数,其返回值为指针。
函数指针本质是一个指针,其指向一个函数。写法不同
指针函数:int* fun(int x,int y);
函数指针:int (*fun)(int x,int y);
可以简单粗暴的理解为,指针函数的*是属于数据类型的,而函数指针的星号是属于函数名的。
再简单一点,可以这样辨别两者:函数名带括号的就是函数指针,否则就是指针函数。用法不同
上面已经写了详细示例,这里就不在啰嗦了。
总而言之,这两个东西很容易搞混淆,一定要深入理解其两者定义和区别,避免犯错。
另外,本文都是针对普通函数指针进行介绍,如果是C++非静态成员函数指针,其用法会有一些区别,在另外一篇博客中单独介绍,文章在这里
-
身份验证错误 要求的函数不受支持 Windows远程桌面连接
2018-05-16 10:55:29之前好好的能远程桌面连接到...要求的函数不受支持。猜想可能是Windows又更新了什么鬼,后面查询资料知道是由于CredSSP加密Oracle修正的原因,这里我整理了下解决方案,希望能帮到你。 微软给出解决方案: ...作为技术人,如何突破自己的技术瓶颈,从而提高自己的核心竞争力
之前好好的能远程桌面连接到服务器,但是今天来就不能连接上了,并提示:身份验证错误。要求的函数不受支持。猜想可能是Windows又更新了什么鬼,后面查询资料知道是由于CredSSP加密Oracle修正的原因,这里我整理了下解决方案,希望能帮到你。
微软给出解决方案:
https://support.microsoft.com/zh-cn/help/4093492/credssp-updates-for-cve-2018-0886-march-13-2018
2018 年 5 月 8 日
罪魁祸首:是由于Windows将默认设置,从“易受攻击”更改为“缓解”的更新引起的。
通用解决方案:
方案一 :安装补丁(强烈推荐)
本地电脑和服务器端都同时安装更新补丁,更新以后重启服务器。
补丁单独下载地址:
win 7、win2008 R2:KB4103718
win 8、win2012:KB4103730
win10、win2016 :KB4103721
注意下载对应版本补丁进行安装,该方案博主没有亲测,请谨慎操作,如有探索的同学,可以试试,欢迎和博主一起交流学习。
方案二:修改组策略设置(适用于windows专业版以上)
打开运行:gpedit.msc
打开组策略编辑器
应用确定完之后就可以进行远程连接
方案三:删除卸载更新(适用于windows10家庭版)
Windows10家庭版,卸载KB4103727和KB4131372两个补丁包即可。
选择查看已安装的更新
选择你要卸载的卸载即可
补丁包需要逐个卸载,等第一个卸载完再卸载第二个,两个都卸载完毕后,重启电脑。你又可以进行远程桌面连接了。
方案四:windows10家庭版找回组策略(适用于windows10家庭版)
以为windows 10 家庭版也可以通过组策略配置就可以了,就把组策略搞了出来,进入组策略发现没有那一项,,最后还是卸载了最后的那个更新补丁
新建一个TXT文档,在里面写入
@echo off pushd "%~dp0" dir /b C:\Windows\servicing\Packages\Microsoft-Windows-GroupPolicy-ClientExtensions-Package~3*.mum >List.txt dir /b C:\Windows\servicing\Packages\Microsoft-Windows-GroupPolicy-ClientTools-Package~3*.mum >>List.txt for /f %%i in ('findstr /i . List.txt 2^>nul') do dism /online /norestart /add-package:"C:\Windows\servicing\Packages\%%i" pause
最后将后缀改为.cmd结尾即可
双机运行,等待他执行完,任意键退出即可
重启PC,运行中再输入gpedit.msc即可调出组策略编辑器,再进行方案二的操作。
方案五:直接改服务器配置(简单)
依次打开:我的电脑 - 属性 - 远程桌面设置 - 远程。去掉下面截图的这个勾选。
-
Pandas的Apply函数——Pandas中最好用的函数
2018-02-22 18:22:04Pandas最好用的函数 Pandas是Python语言中非常好用的一种数据结构包, 包含了许多有用的数据操作方法。而且很多算法相关的库函数的输入数据结构都要求是pandas数据,或者有该数据的接口。 仔细看pandas的API...Pandas最好用的函数
Pandas是
Python
语言中非常好用的一种数据结构包,包含了许多有用的数据操作方法。而且很多算法相关的库函数的输入数据结构都要求是pandas
数据,或者有该数据的接口。仔细看pandas的API说明文档,就会发现有好多有用的函数,比如非常常用的文件的读写函数就包括如下函数:
Format Type Data Description Reader Writer text CSV read_csv to_csv text JSON read_json to_json text HTML read_html to_html text Local clipboard read_clipboard to_clipboard binary MS Excel read_excel to_excel binary HDF5 Format read_hdf to_hdf binary Feather Format read_feather to_feather binary Parquet Format read_parquet to_parquet binary Msgpack read_msgpack to_msgpack binary Stata read_stata to_stata binary SAS read_sas binary Python Pickle Format read_pickle to_pickle SQL SQL read_sql to_sql SQL Google Big Query read_gbq to_gbq 读取数据后,对于数据处理来说,有好多有用的相关操作的函数,但是我认为其中最好用的函数是下面这个函数:
apply函数
apply函数是`pandas`里面所有函数中自由度最高的函数。该函数如下:DataFrame.apply(func, axis=0, broadcast=False, raw=False, reduce=None, args=(), **kwds)
该函数最有用的是第一个参数,这个参数是函数,相当于
C/C++
的函数指针。这个函数需要自己实现,函数的传入参数根据
axis
来定,比如axis = 1
,就会把一行数据作为Series
的数据结构传入给自己实现的函数中,我们在函数中实现对Series
不同属性之间的计算,返回一个结果,则apply
函数会自动遍历每一行DataFrame
的数据,最后将所有结果组合成一个Series
数据结构并返回。比如读取一个表格:
假如我们想要得到表格中的PublishedTime
和ReceivedTime
属性之间的时间差数据,就可以使用下面的函数来实现:import pandas as pd import datetime #用来计算日期差的包 def dataInterval(data1,data2): d1 = datetime.datetime.strptime(data1, '%Y-%m-%d') d2 = datetime.datetime.strptime(data2, '%Y-%m-%d') delta = d1 - d2 return delta.days def getInterval(arrLike): #用来计算日期间隔天数的调用的函数 PublishedTime = arrLike['PublishedTime'] ReceivedTime = arrLike['ReceivedTime'] # print(PublishedTime.strip(),ReceivedTime.strip()) days = dataInterval(PublishedTime.strip(),ReceivedTime.strip()) #注意去掉两端空白 return days if __name__ == '__main__': fileName = "NS_new.xls"; df = pd.read_excel(fileName) df['TimeInterval'] = df.apply(getInterval , axis = 1)
有时候,我们想给自己实现的函数传递参数,就可以用的
apply
函数的*args
和**kwds
参数,比如同样的时间差函数,我希望自己传递时间差的标签,这样没次标签更改就不用修改自己实现的函数了,实现代码如下:import pandas as pd import datetime #用来计算日期差的包 def dataInterval(data1,data2): d1 = datetime.datetime.strptime(data1, '%Y-%m-%d') d2 = datetime.datetime.strptime(data2, '%Y-%m-%d') delta = d1 - d2 return delta.days def getInterval_new(arrLike,before,after): #用来计算日期间隔天数的调用的函数 before = arrLike[before] after = arrLike[after] # print(PublishedTime.strip(),ReceivedTime.strip()) days = dataInterval(after.strip(),before.strip()) #注意去掉两端空白 return days if __name__ == '__main__': fileName = "NS_new.xls"; df = pd.read_excel(fileName) df['TimeInterval'] = df.apply(getInterval_new , axis = 1, args = ('ReceivedTime','PublishedTime')) #调用方式一 #下面的调用方式等价于上面的调用方式 df['TimeInterval'] = df.apply(getInterval_new , axis = 1, **{'before':'ReceivedTime','after':'PublishedTime'}) #调用方式二 #下面的调用方式等价于上面的调用方式 df['TimeInterval'] = df.apply(getInterval_new , axis = 1, before='ReceivedTime',after='PublishedTime') #调用方式三
修改后的
getInterval_new
函数多了两个参数,这样我们在使用apply
函数的时候要自己传递参数,代码中显示的三种传递方式都行。最后,本篇的全部代码在下面这个网页可以下载:
https://github.com/Dongzhixiao/Python_Exercise/tree/master/pandas_apply
-
常用激活函数(激励函数)理解与总结
2018-05-13 23:07:19学习神经网络的时候我们总是听到激活函数这个词,而且很多资料都会提到常用的激活函数,比如Sigmoid函数、tanh函数、Relu函数。那么我们就来详细了解下激活函数方方面面的知识。本文的内容包括几个部分: 什么是...引言
学习神经网络的时候我们总是听到激活函数这个词,而且很多资料都会提到常用的激活函数,比如Sigmoid函数、tanh函数、Relu函数。那么我们就来详细了解下激活函数方方面面的知识。本文的内容包括几个部分:
- 什么是激活函数?
- 激活函数的用途(为什么需要激活函数)?
- 有哪些激活函数,都有什么性质和特点?
- 应用中如何选择合适的激活函数?
如果你对以上几个问题不是很清楚,下面的内容对你是有价值的。
什么是激活函数?
首先要了解神经网络的基本模型。(不熟悉的同学请去看本人另外一篇介绍:人工神经网络基本原理)
单一神经元模型如下图所示。
神经网络中的每个神经元节点接受上一层神经元的输出值作为本神经元的输入值,并将输入值传递给下一层,输入层神经元节点会将输入属性值直接传递给下一层(隐层或输出层)。在多层神经网络中,上层节点的输出和下层节点的输入之间具有一个函数关系,这个函数称为激活函数(又称激励函数)。激活函数的用途(为什么需要激活函数)?
如果不用激励函数(其实相当于激励函数是f(x) = x),在这种情况下你每一层节点的输入都是上层输出的线性函数,很容易验证,无论你神经网络有多少层,输出都是输入的线性组合,与没有隐藏层效果相当,这种情况就是最原始的感知机(Perceptron)了,那么网络的逼近能力就相当有限。正因为上面的原因,我们决定引入非线性函数作为激励函数,这样深层神经网络表达能力就更加强大(不再是输入的线性组合,而是几乎可以逼近任意函数)。
有哪些激活函数,都有什么性质和特点?
早期研究神经网络主要采用sigmoid函数或者tanh函数,输出有界,很容易充当下一层的输入。
近些年Relu函数及其改进型(如Leaky-ReLU、P-ReLU、R-ReLU等)在多层神经网络中应用比较多。下面我们来总结下这些激活函数:Sigmoid函数
Sigmoid 是常用的非线性的激活函数,它的数学形式如下:
f(z)=11+e−z f(z)=\frac{1}{1+e^{-z}}f(z)=1+e−z1
Sigmoid的几何图像如下:
特点:
它能够把输入的连续实值变换为0和1之间的输出,特别的,如果是非常大的负数,那么输出就是0;如果是非常大的正数,输出就是1.
缺点:
sigmoid函数曾经被使用的很多,不过近年来,用它的人越来越少了。主要是因为它固有的一些 缺点。
缺点1:在深度神经网络中梯度反向传递时导致梯度爆炸和梯度消失,其中梯度爆炸发生的概率非常小,而梯度消失发生的概率比较大。首先来看Sigmoid函数的导数,如下图所示:
如果我们初始化神经网络的权值为 [0,1][0,1][0,1] 之间的随机值,由反向传播算法的数学推导可知,梯度从后向前传播时,每传递一层梯度值都会减小为原来的0.25倍,如果神经网络隐层特别多,那么梯度在穿过多层后将变得非常小接近于0,即出现梯度消失现象;当网络权值初始化为 (1,+∞)(1,+∞)(1,+∞) 区间内的值,则会出现梯度爆炸情况。
详细数学分析见文章:http://neuralnetworksanddeeplearning.com/chap5.html 中文译文:深度神经网络为何很难训练
缺点2:Sigmoid 的 output 不是0均值(即zero-centered)。这是不可取的,因为这会导致后一层的神经元将得到上一层输出的非0均值的信号作为输入。 产生的一个结果就是:如x>0, f=wTx+bx>0, \ f= w^Tx+bx>0, f=wTx+b,那么对w求局部梯度则都为正,这样在反向传播的过程中w要么都往正方向更新,要么都往负方向更新,导致有一种捆绑的效果,使得收敛缓慢。 当然了,如果按batch去训练,那么那个batch可能得到不同的信号,所以这个问题还是可以缓解一下的。因此,非0均值这个问题虽然会产生一些不好的影响,不过跟上面提到的梯度消失问题相比还是要好很多的。
缺点3:其解析式中含有幂运算,计算机求解时相对来讲比较耗时。对于规模比较大的深度网络,这会较大地增加训练时间。tanh函数
tanh函数解析式:
tanh(x)=ex−e−xex+e−xtanh(x)=\frac{e^{x}-e^{-x}}{e^{x}+e^{-x}}tanh(x)=ex+e−xex−e−x
tanh函数及其导数的几何图像如下图:
tanh读作Hyperbolic Tangent,它解决了Sigmoid函数的不是zero-centered输出问题,然而,梯度消失(gradient vanishing)的问题和幂运算的问题仍然存在。Relu函数
Relu函数的解析式:
Relu=max(0,x)Relu=max(0,x)Relu=max(0,x)
Relu函数及其导数的图像如下图所示:
ReLU函数其实就是一个取最大值函数,注意这并不是全区间可导的,但是我们可以取sub-gradient,如上图所示。ReLU虽然简单,但却是近几年的重要成果,有以下几大优点:
1) 解决了gradient vanishing问题 (在正区间)
2)计算速度非常快,只需要判断输入是否大于0
3)收敛速度远快于sigmoid和tanhReLU也有几个需要特别注意的问题:
1)ReLU的输出不是zero-centered
2)Dead ReLU Problem,指的是某些神经元可能永远不会被激活,导致相应的参数永远不能被更新。有两个主要原因可能导致这种情况产生: (1) 非常不幸的参数初始化,这种情况比较少见 (2) learning rate太高导致在训练过程中参数更新太大,不幸使网络进入这种状态。解决方法是可以采用Xavier初始化方法,以及避免将learning rate设置太大或使用adagrad等自动调节learning rate的算法。尽管存在这两个问题,ReLU目前仍是最常用的activation function,在搭建人工神经网络的时候推荐优先尝试!
Leaky ReLU函数(PReLU)
函数表达式:f(x)=max(αx,x)f(x)=max(\alpha x,x)f(x)=max(αx,x)
Leaky Relu函数及其导数的图像如下图所示:
(有同学在评论中反映下图有误,其实没有错误,左半边直线斜率非常接近0,所以看起来像是平的。就不改了,α=0.01\alpha=0.01α=0.01看起来就是这样的。感谢大家提意见 ^ _ ^)
人们为了解决Dead ReLU Problem,提出了将ReLU的前半段设为αx\alpha xαx而非0,通常α=0.01\alpha=0.01α=0.01。另外一种直观的想法是基于参数的方法,即ParametricReLU:f(x)=max(αx,x)Parametric ReLU:f(x) = \max(\alpha x, x)ParametricReLU:f(x)=max(αx,x),其中α\alphaα
可由方向传播算法学出来。理论上来讲,Leaky ReLU有ReLU的所有优点,外加不会有Dead ReLU问题,但是在实际操作当中,并没有完全证明Leaky ReLU总是好于ReLU。ELU (Exponential Linear Units) 函数
函数表达式:
f(x)={x,if x>0α(ex−1),otherwisef(x)= \begin{cases}x,& \text{if } x > 0\\ \alpha(e^x - 1), & \text{otherwise} \end{cases}f(x)={x,α(ex−1),if x>0otherwise
函数及其导数的图像如下图所示:ELU也是为解决ReLU存在的问题而提出,显然,ELU有ReLU的基本所有优点,以及:
不会有Dead ReLU问题 输出的均值接近0,zero-centered
它的一个小问题在于计算量稍大。类似于Leaky ReLU,理论上虽然好于ReLU,但在实际使用中目前并没有好的证据ELU总是优于ReLU。
MaxOut函数
这个函数可以参考论文《maxout networks》,Maxout是深度学习网络中的一层网络,就像池化层、卷积层一样等,我们可以把maxout 看成是网络的激活函数层,我们假设网络某一层的输入特征向量为:X=(x1,x2,……xd),也就是我们输入是d个神经元。Maxout隐藏层每个神经元的计算公式如下:
上面的公式就是maxout隐藏层神经元i的计算公式。其中,k就是maxout层所需要的参数了,由我们人为设定大小。就像dropout一样,也有自己的参数p(每个神经元dropout概率),maxout的参数是k。公式中Z的计算公式为:
权重w是一个大小为(d,m,k)三维矩阵,b是一个大小为(m,k)的二维矩阵,这两个就是我们需要学习的参数。如果我们设定参数k=1,那么这个时候,网络就类似于以前我们所学普通的MLP网络。
我们可以这么理解,本来传统的MLP算法在第i层到第i+1层,参数只有一组,然而现在我们不这么干了,我们在这一层同时训练n组的w、b参数,然后选择激活值Z最大的作为下一层神经元的激活值,这个max(z)函数即充当了激活函数。应用中如何选择合适的激活函数?
这个问题目前没有确定的方法,凭一些经验吧。
1)深度学习往往需要大量时间来处理大量数据,模型的收敛速度是尤为重要的。所以,总体上来讲,训练深度学习网络尽量使用zero-centered数据 (可以经过数据预处理实现) 和zero-centered输出。所以要尽量选择输出具有zero-centered特点的激活函数以加快模型的收敛速度。
2)如果使用 ReLU,那么一定要小心设置 learning rate,而且要注意不要让网络出现很多 “dead” 神经元,如果这个问题不好解决,那么可以试试 Leaky ReLU、PReLU 或者 Maxout.
3)最好不要用 sigmoid,你可以试试 tanh,不过可以预期它的效果会比不上 ReLU 和 Maxout.参考资料
1.聊一聊深度学习的activation function—夏飞
2.http://blog.csdn.net/cyh_24/article/details/50593400
3.http://www.cnblogs.com/tornadomeet/p/3428843.html
4.《maxout networks》 -
Matlab subs函数的用法
2017-01-03 20:16:17Matlab subs函数的用法 matlab中subs()是符号计算函数,详细用法可以在Matlab的Command Windows输入:help subs。subs()函数表示将符号表达式中的某些符号变量替换为指定的新的变量,常用调用方式为: R = subs(S,... -
Kotlin系列之let、with、run、apply、also函数的使用
2017-12-12 21:59:53一、回调函数的Kotin的lambda的简化 二、内联扩展函数之let 三、内联函数之with 四、内联扩展函数之run 五、内联扩展函数之apply 六、内联扩展函数之also 七、let,with,run,apply,also函数区别 简述: 相比Java, ... -
如何简单理解概率分布函数和概率密度函数?
2018-09-11 16:56:19本篇文章是在《应该如何理解概率分布函数和概率密度函数?》的基础上整理来的。非常感谢原作者。 目录 1先从离散型随机变量和连续性随机变量说起 2离散型随机变量的概率函数,概率分布和分布函数 2.1概率函数和... -
JAVA构造函数(方法)
2019-06-03 21:56:24一、什么是构造函数 java构造函数,也叫构造方法,是java中一种特殊的函数。函数名与相同,无返回值。 作用:一般用来初始化成员属性和成员方法的,即new对象产生后,就调用了对象了属性和方法。 在现实生活中,... -
C++中strcpy()函数和strcpy_s()函数的使用及注意事项
2018-09-04 12:55:18在编写C++程序时,不可避免会遇到strcpy()函数和其安全版本strcpy_s()函数,其实之所以会推出_s版本的函数,就是为了使编程更加安全,然而为了保证安全,也就会更容易使我们编写的代码“被报错”。所以这里来简略说... -
COUNT()函数详解
2017-11-24 13:12:33COUNT 顾名思义,就是计数的意思,此函数用处就是对表中记录数进行计数。 MySQL COUNT()函数介绍 COUNT()函数返回表中的行数。COUNT()函数允许您对表中符合特定条件的所有行进行计数。 COUNT()函数的语法如下 - ... -
伽马函数的总结
2016-11-04 10:08:37伽马函数的总结@(概率论)Γ(x)=∫+∞0tx−1e−tdt\Gamma(x) = \int_0^{+\infty}t^{x-1}e^{-t}dt性质: Γ(x+1)=xΓ(x)\Gamma(x+1) = x\Gamma(x) Γ(x)>0,任意x∈(0,+∞)\Gamma(x) > 0, 任意x\in(0,+\infty) Γ(1)=... -
accept函数详解
2013-10-29 00:08:47既然服务端已经很虔诚了,很真诚了,处于倾听状态,...接纳客户端请求的函数是accept, 我们先来看看函数的原型: WINSOCK_API_LINKAGE SOCKET WSAAPI accept( SOCKET s, struct sockaddr FAR * addr, int FAR * ad -
一分钟理解softmax函数(超简单)
2018-11-28 16:39:09做过多分类任务的同学一定都知道softmax函数。softmax函数,又称归一化指数函数。它是二分类函数sigmoid在多分类上的推广,目的是将多分类的结果以概率的形式展现出来。下图展示了softmax的计算方法: 下面为大家... -
终于搞懂了vue 的 render 函数(一) -_-|||
2018-10-11 20:32:18文章目录render 函数作用render 函数讲解render 函数的返回值(VNode)render 函数的参数(createElement)createElement 函数的返回值(VNode)createElement 函数的参数(三个)结合代码 vue渲染函数文档第一遍看... -
C语言函数
2019-08-03 19:54:19每个C程序都至少有一个函数,即主函数main(),如果程序的任务比较简单,全部的代码都写在main()函数中,但是,在实际开发中,程序的任务往往比较复杂,如果全部的代码都写在main()函数中,main()函数将非常庞大臃肿... -
指针函数和函数指针
2019-03-30 16:21:36很多人因为搞不清这两个概念,干脆就避而远之,我刚接触C语言的时候对这两个概念也比较模糊,特别是当指针函数、函数指针、函数指针变量、函数指针数组放在一块的时候,能把强迫症的人活活逼疯。 其实如果理解了这些... -
R语言常用函数总结大全
2017-03-12 09:01:58今天把R常用函数大体汇总了一下,其中包括一般数学函数,统计函数,概率函数,字符处理函数,以及一些其他函数; 1.数学函数 函数 作用 abs() 绝对值 sqrt() ... -
C++虚函数表剖析
2016-02-18 20:28:23关键词:虚函数,虚表,虚表指针,动态绑定,多态一、概述为了实现C++的多态,C++使用了一种动态绑定的技术。这个技术的核心是虚函数表(下文简称虚表)。本文介绍虚函数表是如何实现动态绑定的。二、类的虚表每个... -
sigmod函数tanh函数ReLU函数
2016-10-30 21:43:44sigmod(x)函数sigmod函数的数学公式为: Θ(x)=11+e−x \Theta(x)=\frac {1}{1+e^{-x} } 函数取值范围(0,1),函数图像下图所示:二. tanh(x) 函数tanh(x)函数的数学公式为:tanh(x)=sinh(x)cosh(x)tanh(x) = \frac{... -
虚函数和纯虚函数的区别
2012-05-11 22:35:51定义一个函数为虚函数,不代表函数为不被实现的函数。 定义他为虚函数是为了允许用基类的指针来调用子类的这个函数。 定义一个函数为纯虚函数,才代表函数没有被实现。 定义纯虚函数是为了实现一个接口,起到一个... -
MATLAB:运行出现 “ 未定义函数或变量 ”
2019-05-17 22:18:13第一次接触MATLAB,出现错误还以为函数写错了,检查之后发现不是,上网找了找方法 如果编写的文件没有放在当前运行目录下,也会出现这个错误,具体可点击参考 检查目录后,发现路径没有错 最后,发现,编写的M文件,... -
激活函数Sigmoid
2020-03-18 19:53:54本文直接讨论SIgmoid激活函数,这是比较早的激活函数了,使用也非常广泛,这个函数又叫Logistic函数,因为这个激活函数和逻辑回归的关系式非常之密切的。 函数的形式是f(x)=11−e−xf(x)=\frac{1}{1-e^{-x}}f(x)... -
激活函数Tanh
2020-03-18 19:54:46激活函数Tanh系列文章: Tanh的诞生比Sigmoid晚一些,sigmoid函数我们提到过有一个缺点就是输出不以0为中心,使得收敛变慢的问题。而Tanh则就是解决了这个问题。Tanh就是双曲正切函数。等于双曲余弦除双曲正弦。... -
激活函数ReLU
2020-03-18 19:55:16激活函数ReLUReLUPReLU(Parametric)E(Exponential)LU系列文章: ReLU Relu(Rectified Linear Unit)函数也可谓是一个里程碑式的激活函数。我们之前已经谈到过sigmoid函数和tanh函数的缺点,我们接下来就看relu... -
考研数学-三角函数与反三角函数图像
2018-08-12 17:42:57在三角函数的前面加上arc,表示它们的反函数f–1(x)。即由一个三角函数值得出当时的角度。 1. 正弦函数 sin x, 反正弦函数 arcsin x y = sin x, x∈R, y∈[–1,1],周期为2π,函数图像以 x = (π/2) + k... -
matlab中求均值的mean()函数的使用
2016-06-08 10:17:05matlab中mean函数 -
C++(笔记)容器(vector)作为函数参数如何传参
2017-05-17 17:51:54一、大致以下类型 void 函数名( vector< int> obj ); void 函数名( vector* pobj );... // 在函数内不能改变 pobj 指向的对象 ,//调用时不会调用拷贝构造函数 void 函数名( vector< int>& obj ); void -
激活函数:阶跃函数、sigmoid函数、ReLU函数、softmax函数
2018-12-26 14:58:18之前提到的激活函数是以阈值0(界限值)为界的,小于等于0,输出0,否则,输出1。类似于这样的切换输出函数被称之为“阶跃函数”。因此,可以说感知机的激活函数为阶跃函数。那么,如果感知机使用其他函数作为激活... -
c++虚函数详解(你肯定懂了)
2018-08-01 11:02:13转自:c++虚函数 大牛的文章,就是通俗易懂,言简意赅。 前言 C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数... -
Matlab sim函数的用法
2016-11-26 20:50:37最近用Simulink做仿真的时候,需要在m文件里运行Simulink模型,而且需要传递一些参数,所以要用到sim函数。查看了help文档,并百度到了一些关于sim的用法的答案,但并没能达到我要的效果,大多数答案都是描述sim函数...
-
Unity游戏开发之数字华容道
-
hbase数据结构小结
-
pygame-2.0.1-cp37-cp37m-win_amd64.whl
-
SQL Server 2016 高可用灾备技术合集
-
【ZJU-Machine Learning】神经元的数学模型和感知器算法
-
易语言开发通达信DLL公式接口
-
阿里云云计算ACP考试必备教程
-
C语言调用易语言模板.rar
-
【2021】UI自动化测试框架(Selenium3)
-
找工作不理想,可能是这些原因,致刚出校门的朋友们!
-
untitled_dan_xiang_xiao_hu_jie_di.slx
-
转行做IT-第8章 类与对象、封装、构造方法
-
每天学点linux命令(3)-netstat
-
activiti.txt
-
DEELX_条件表达式.rar
-
软件测试基础
-
21年新消息队列RabbitMQ视频教程AMQP教程
-
Java虚拟机向ARM平台的移植.pdf
-
【2021】Python3+Selenium3自动化测试(不含框架)
-
Soul网关源码阅读(九)—— 数据同步之WebSocket