栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

神经网络与深度学习日志2

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

神经网络与深度学习日志2

承接上篇

(因为这是学习日志(吴恩达深度学习),以下说法未必标准,也未必正确)

(ps:注意字母大小写)

1.向量化

        上文中展示的程序是以显性for循坏来实现的,但for循环带来的是计算速度慢的问题,减少for,while循坏的使用可以提高算法的速度。我们的解决办法是向量化。

        这里我们要使用numpy这一个类,其中的方法已经可以使用。

        向量化程序如图

        np.array是创立一个符合numpy的列表(或者说向量)

        np.dot是里面的一个方法,可以将两个向量点乘

for和向量化版本的程序的运算速度对比如下

         可以看到向量化运行速度之快

        那么改进之前代码的方案如下

 2.广播

        过程示意图如下

 这是正向传播的过程。注意这里是大写X,Z,W,代表这里是各自对应的集合

那么展示一下python程序

        可以看到这里只加了一个b,并不是B。这是因为加b的时候b会自动变成规格相同的矩阵,这就是广播

3.激活函数

        损失函数不只Sigmoid一种,事实上,这个函数有一个上位替代,激活函数也不止这一种。常用的有四种。

 

         tanh函数就是sigmoid函数的上位替代,可以看作是sigmoid平移之后乘2,它是值域是(-1,1)所以平均值更接近0,以达到一种类似数据中心化的效果,这也是为什么tanh比sigmoid更好,但并不是不能用,如图所示sigmoid更多用于二分分类,但其实tanh无论在哪个场合都比sigmoid好。

        但其实呃,tanh和sigmoid使用率都不高,原因是这两种激活函数在当z越来越偏离0时,导数越来越小。而Relu函数的导数唯一,并不会出现其他激活函数的情况,导数大也使得梯度下降的快,学习效率高。所以通常隐藏层使用relu,输出层则视情况选择sigmoid或tanh。那么leaky Relu解决一个z为负数的一个情况,也可以使用。

3.损失函数

        之前上一篇中已经提到了损失函数。

        那么为什么损失函数长这样,如图所示

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/360523.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号