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

本文介绍了深度学习中提高计算效率的关键技术——向量化,通过使用numpy库避免for循环,提升运算速度。此外,解释了广播机制在矩阵运算中的应用,以及如何自动调整尺寸。接着讨论了激活函数,包括sigmoid、tanh和relu等,强调了relu在隐藏层的优势和不同激活函数的选择依据。最后简要提及了损失函数的作用和设计原理。
摘要由CSDN通过智能技术生成

承接上篇

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

(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.损失函数

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

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值