delta函数

python assert断言函数

巧了我就是萌 提交于 2020-03-12 07:34:50
python assert断言是声明布尔值必须为真的判定,如果发生异常就说明表达式为假。 可以理解assert断言语句为raise-if-not,用来测试表示式,其返回值为假,就会触发异常。 self.assertEqual(a,b,msg=msg) #判断a与.b是否一致,msg类似备注,可以为空 self.assertNotEqual(a,b,msg=msg) #判断a与b是否不一致 self.assertTrue(a,msg=none) #判断a是否为True self.assertFalse(b,msg=none) #判断b是否为false self.assertAlmostEqual(a,b,places=none,msg=none,delta=none) #该判断过程有点复杂,判断过程如下 注:places与delta不能同时存在,否则出异常 #若a==b,则直接输入正确,不判断下面的过程 #若delta有数,places为空,判断a与b的差的绝对值是否<=delta,满足则正确,否则错误 #若delta为空,places有数,判断b与a的差的绝对值,取小数places位,等于0则正确,否则错误 #若delta为空,places为空,默认赋值places=7判断 例 assertAlmostEqual(2,2) 正确, assertAlmostEqual(5,2

python assert断言函数

早过忘川 提交于 2020-03-12 07:33:59
python assert断言是声明布尔值必须为真的判定,如果发生异常就说明表达式为假。 可以理解assert断言语句为raise-if-not,用来测试表示式,其返回值为假,就会触发异常。 self.assertEqual(a,b,msg=msg) #判断a与.b是否一致,msg类似备注,可以为空 self.assertNotEqual(a,b,msg=msg) #判断a与b是否不一致 self.assertTrue(a,msg=none) #判断a是否为True self.assertFalse(b,msg=none) #判断b是否为false self.assertAlmostEqual(a,b,places=none,msg=none,delta=none) #该判断过程有点复杂,判断过程如下 注:places与delta不能同时存在,否则出异常 #若a==b,则直接输入正确,不判断下面的过程 #若delta有数,places为空,判断a与b的差的绝对值是否<=delta,满足则正确,否则错误 #若delta为空,places有数,判断b与a的差的绝对值,取小数places位,等于0则正确,否则错误 #若delta为空,places为空,默认赋值places=7判断 例 assertAlmostEqual(2,2) 正确, assertAlmostEqual(5,2

机器学习公开课备忘录(二)神经网络与BP算法

自古美人都是妖i 提交于 2020-03-10 18:02:12
机器学习公开课备忘录(二)神经网络与BP算法 神经网络是针对特征过多,分布非线性的监督学习类问题提出的,模仿人类大脑的工作方式。例如:图像判别 前向算法 下面这张取自 http://www.cnblogs.com/python27/p/MachineLearningWeek05.html 的图片可以很好地说明前向算法,对于神经网络,特征所在的层称为输入层,即此处的 \(a^{(1)}\) ;结果层被成为输出层,即为此处的 \(a^{(3)}\) ,中间的层都被成为隐藏层。 可以看到,计算隐藏层及输出层的神经元输出,即是对输入层的输入进行加权,然后做sigmod映射,每一层还会额外增加偏置项,即常数项。 神经网络既可以用于回归问题,也可以用于分类问题。公开课讲述的是以分类问题作为例子的,对于二分类问题,可以根据输出层和阈值来进行划分是 \(0 或 1\) ;但对于多分类问题,往往 \(k\) 个分类会在输出层设置成 \(k\) 个单元,每个输入值的结果写成 \(\{1 0 0 0 ...\}\{0 1 0 0 ...\}\{0 0 1 0 ...\}\) 的形式,即若输出标记为第 \(k\) 类,则第 \(k\) 个元素为1,其余均为零。然后求出无标记数据的输出结果后,对输出层最接近1的神经元置1,其余置0,来得到其类别。 BP算法

Neural networks and the backpropagation algorithm

大憨熊 提交于 2020-03-10 17:55:31
1. Neural network formulation Notations:$x$为输入,$y$为输出,用$n_l$表示网络的层数,$s_l$表示第$l$层的节点数(不考虑bias),输入层记为$a^{(1)}=x$ $$z^{(l+1)}=W^{(l)}a^{(l)}+b^{(l)}$$ $$a^{(l+1)}=f(z^{(l+1)})$$ Remarks 1. $W^{(l)}$是一个$s_{l+1}\times s_{l}$的矩阵,第$i$行对应由$l$层到$l+1$层节点$i$的线性组合的系数。 2. 定义cost function $$J(W,b;x,y)=\frac{1}{2}||h_{W, b}(x)-y||^2$$ $$J(W,b)=\left[\frac{1}{m}\sum_{i=1}^m(\frac{1}{2}||h_{W, b}(x^{(i)})-y^{(i)}||^2)\right]+\frac{\lambda}{2}\sum_{l=1}^{n_l-1}\sum_{i=1}^{s_l}\sum_{j=1}^{s_{l+1}}(W_{ji}^{(l)})^2$$ Remarks 1. 上面的$J(W,b)$定义了总体的损失函数,第一项是sum-of-squares error term,第二项是regularization term。 2.

机器学习代码实战——数值计算

瘦欲@ 提交于 2020-03-09 15:58:36
文章目录 1.上溢和下溢 2.优化方法 1.上溢和下溢 下溢(Underflow):当接近零的数被四舍五入为零时发生下溢。 上溢(Overflow):当大量级的数被近似为 ∞ 或 −∞ 时发生上溢。 必须对上溢和下溢进行数值稳定的一个例子是 softmax 函数。softmax 函数经常用于预测与范畴分布相关联的概率,定义为: import numpy as np x = np . array ( [ 1e7 , 1e8 , 2e5 , 2e7 ] ) y = np . exp ( x ) / sum ( np . exp ( x ) ) print ( "上溢:" , y ) x = x - np . max ( x ) # 减去最大值 y = np . exp ( x ) / sum ( np . exp ( x ) ) print ( "上溢处理:" , y ) import numpy as np x = np . array ( [ - 1e10 , - 1e9 , - 2e10 , - 1e10 ] ) y = np . exp ( x ) / sum ( np . exp ( x ) ) print ( "下溢:" , y ) x = x - np . max ( x ) y = np . exp ( x ) / sum ( np . exp ( x ) )

深度学习-卷积神经网络笔记

懵懂的女人 提交于 2020-03-04 05:25:05
卷积神经网络组成 : input--CONV--ReLU--pooling--FC 输入层--卷积层--激活函数--池化层--全连接层 在这里需要指出的是:--卷积层--激活函数--池化层--全连接层,它的组合不唯一,也可以看一下关于卷积神经网络的 概括 : 由于它们的组合可以作出相应的改变,所以使得卷积神经网络有很多不同的表达,尤其是在深度上的提高。 卷积层 卷积层一般是由3x3或5x5,甚至是11x11的卷积核与传入数据进行卷积得到的,下图是3x3Filter与绿色的图像做卷积的过程,粉红色的图是卷积之后的结果。 局部感受野 :上图中的3x3卷积核,先与图像中的左上角的 3x3局部感受野 做点积并将所有的结果进行加和才得到粉色图像中的第一个数字4,接着每移动一列进行一次内积并作加和,直到所有的 局部感受野 处理完毕为止。就得到了第一个卷积特征图。在这里面的移动步长S为1。补充一下:卷积核的行列值一般都是奇数。上图的计算过程中不难发现,输入图的矩阵的四个边只利用到了一次,如果想要充分利用边上的特征就需要扩边。在下图中就是对一个RGB图进行了边的扩充,当然RGB是三维的,所以可以利用三个卷积核对每一维进行卷积,然后将所有的卷积结果进行相加,即图中的绿色输出的第一个图的左上角数字5是由,w0三个卷积核分别对不同维度做卷积后的结果的总和。 权值共享 :在我看来

最优化理论实践——神经网络训练

徘徊边缘 提交于 2020-02-19 04:13:47
无约束优化实践 训练一个神经网络 优化理论实践 用了一周的时间学习了一下最优化理论这门课,为了更深度地理解各种优化方法的理念和算法过程,自己把这些算法应用到实践中是很必要的。为此我设计了和优化算法相关的四个实验项目,在这里和大家分享一下。 无约束优化方法 前馈神经网络 根据链式法则,从输出层直接对误差函数求导得到的误差(这里我们简写为δ),就可以通过和上面的这些局部导数不断做乘积、并把新的δ传播到上一层,就能计算得到所有参数的导数。通过一阶导数,就能实现基本的梯度优化方法。 训练方法 神经网络可以很好地处理函数拟合问题,因为模型带有大量可调节的参数,而且内置了非线性的激励函数,这就让神经网络实现各种函数的拟合成为可能。 前面已经说到,全连接神经网络(前馈神经网络)的前向传播和反向传播都可以写成简单的矩阵与矩阵相乘,矩阵和常数相乘,矩阵和常数相加的形式。只要按照上面的公式实现矩阵运算,就可以搭建一个自己的神经网络了。 我们这里将要实现的是函数拟合,训练的过程可以理解为是让神经网络输出与真实函数值相差最小的过程,因此使用均方误差MSE进行训练。 均方误差是二次型函数,显然是凸函数。神经网络内的参数w和b都没有约束条件,即训练神经网络的问题是一个无约束凸优化问题。 算法的选择是要经过考虑的。首先,神经网络内参数的导数容易从反向传播算法得到,但是二阶导数不是那么容易计算

高等数学——复杂函数的求导方法

瘦欲@ 提交于 2020-02-14 08:57:08
本文始发于个人公众号: TechFlow,原创不易,求个关注 上一篇文章我们复习了函数求导的定义和一些常见函数的导数,今天这篇文章我们回顾一下复杂函数的求导方法。先强调一下,今天的文章很重要,想要看懂机器学习各种公式推导,想要能够自己推一推各种公式,函数求导是基础中的基础,在算法这个领域,它比积分要重要得多。 我们先来看第一种情况:多个函数进行四则运算的导数。 函数四则运算求导法则 我们假设 \(u=u(x)\) 和 \(v=v(x)\) 都在x点有导数,那么它们进行加减乘除四则运算之后的结果的导数有如下性质: \[ \begin{aligned} \left[u(x) \pm v(x)\right]'&= u'(x) \pm v'(x) \\ \left[u(x)v(x)\right]' &= u'(x)v(x) + u(x)v'(x) \\ \left[\frac{u(x)}{v(x)}\right] &= \frac{u'(x)v(x)-u(x)v'(x)}{v^2(x)} (v(x) \neq 0) \end{aligned} \] 我们来看一下证明过程,熟悉证明过程并不是炫技,除了能加深对公式的理解之外,更重要的是防止遗忘。即使以后真的不记得公式的细节了,也可以临时推导一下,这是学算法和数学很重要的技巧。 我们先来看第一个,第一个很容易证明,我们直接套一下导数的公式即可:

高等数学——导数的定义和常见导数

自闭症网瘾萝莉.ら 提交于 2020-02-07 16:14:05
本文始发于个人公众号: TechFlow 导数是微积分也是高数当中很重要的一个部分,不过很遗憾的是,和导数相关的部分很多同学都是高中的时候学的。经过了这么多年,可能都差不多还给老师了。所以今天的文章就一起来温习一下导数的相关知识,捡一捡之前忘记的内容。 函数切线 关于导数,最经典的解释可能就是切线模型了。以前高中的时候,经常对二次函数求切线,后来学了微积分之后明白了,所谓的求切线其实就是求导。 比如当下, 我们有一个光滑的函数曲线 \(y=f(x)\) ,我们想要求出这个曲线在某个点 \(M\) 的切线,那么应该怎么操作呢? 如上图所示,我们可以在选择另外一个点N,然后做MN的割线。假设T是M的真实的切线,当我们将N向M无限逼近的时候, \(\angle NMT\) 在无限缩小,直到趋近与0,而此时的割线MN也就无限逼近于M点真实的切线T。 在图中,MN的斜率表示为 \(\tan\phi\) ,其中 \(\tan\phi=\frac{f(x)-f(x_0)}{x - x_0}\) . 当N逼近于M时: \[\displaystyle\tan\phi= \lim_{x \to x_0}\frac{f(x) - f(x_0)}{x - x_0}\] 我们令 \(\Delta x = x - x_0\) ,所以: \[\displaystyle\tan\phi=\lim_{\Delta

微积分(上)

安稳与你 提交于 2020-02-06 22:04:10
预备知识    领域 :是一种常用的集合,设 \(a,\delta \in \R,\delta > 0\) ,则定义点 \(a\) 的 \(\delta\) 领域,记作 \(U(a,\delta)\) ,为 \((a-\delta,a+\delta)\) 。点 \(a\) 称作 领域的中心 , \(\delta\) 称为 领域的半径 。    去心领域 :如果把领域的中心去掉,所得到的集合即为点 \(a\) 的 \(去心\delta\) 领域,记作 \(\mathring U(a,\delta)\) 。即 \((a-\delta,a+\delta)\setminus\{a\}\) 。    反函数 :设一元函数 \(f:D\rightarrow f(D)\) 为 一一映射 ,则称逆映射 \(f^{-1}:f(D)\rightarrow D\) 为函数 \(f\) 的反函数,即对于每个 \(y\in f(D)\) ,如果 \(y=f(x)\) ,则规定 \(x=f^{-1}(y)\) 。    复合函数 :是一种特殊的复合映射。设两个函数 \(f(x)\) 和 \(g(x)\) ,定义域分别为 \(D_1\) 、 \(D_2\) 且满足 \(g(D_2)\subset D_1\) ,则定义的函数 \(h(x)=f(g(x))\) 称为由函数 \(u=g(x)\) 和函数 \(y=f