输出值在[-1, 1]之间
在RNN里面用得比较多
* tanh的求导推导过程* tanh在pytorch中的实现
3)relu(Rectified Liner Unit,调整的线性流单元)
* 被大量的实验证明,relu函数很适合做deep learning。
因为:z<0时,梯度是0,z>0时,梯度是1。因为在向后传播时候,因为梯度是1,所以对于搜索最优解,梯度计算时候非常方便,也不会被放大和缩小,很难出现梯度弥散和梯度爆炸的情况。所以在神经网络中优先使用此函数。
* relu在pytorch中的实现
三、Loss以及Loss的梯度 1、MSE(mean square error):均方差
pytorch中mse的求解方法:torch.norm().pow(2) # 要记得平方
* MSE求导* 使用pytorch自动求导 1)法一:
使用torch.autograd.grad()
2)法二:
使用mse.backward()
* 注意w.norm(),w.grad(),w.grad().norm()的区别:
w.norm()是均方差的平方根
w.grad()是导数
w.grad().norm()是导数的均方差的平方根
2、Cross Entropy Loss:Softmax:
* softmax特点:
1)输出的所有值的范围是0~1
2)所有概率之和等于1。(注:sigmoid函数,所有概率的和一般是不等于1的)
输出概率最大值的 索引。
3)会将原有值之间的差距拉大。
* softmax求导:
1)当i=j时
2)当i ≠ j时
3)综合
* softmax在pytorch中的实现