深度学习-卷积神经网络算法原理与应用

第2章相关数学基础知识

张量:坐标超过两维的数组 张量中的元素A_{_{i,j,k}}

一维的(数组)、二维的(矩阵)、三维的(空间矩阵)、还有很多维的。Pytorch为了把这些各种维统一起来,所以起名叫张量(tensor)。

torch.tensor([
[[9,1,8],[6,7,5],[3,4,2]],
[[2,9,1],[8,6,7],[5,3,4]],
[[1,5,9],[7,2,6],[4,8,3]]
])

标量-向量-张量

张量可以看作是一个多维数组。标量可以看作是0维张量,向量可以看作1维张量,矩阵可以看作是二维张量。如果你之前用过NumPy,你会发现 Tensor和NumPy的多维数组非常类似。

也就是说,tensor和NumPy都是为了表达张量(多维数组),在这些张量(多维数组)上可以进行各种各样的运算,因此把张量及其运算封装成了类,张量的运算就是类里面的方法。

创建tensor:

x = torch.empty(5, 3)
x = torch.rand(5, 3)
x = torch.zeros(5, 3, dtype=torch.long)
x = torch.tensor([5.5, 3])
x = x.new_ones(5, 3, dtype=torch.float64)
y = torch.randn_like(x, dtype=torch.float)

获取Tensor的形状:

print(x.size())
print(x.shape)

Tensor的各种操作:

  y = torch.rand(5, 3)
  print(x + y)  # 加法形式一
  print(torch.add(x, y))  # 加法形式二
  # adds x to y
  y.add_(x)  # 加法形式三
  print(y)

PyTorch中的Tensor支持超过一百种操作,包括转置、索引、切片、数学运算、线性代数、随机数等等。

范数(Frobenius Norm)

卷积:

输入-x w -核函数 输出-特征映射

激活函数

2.4.1线性激活函数

1.恒等函数 f(x)=x

2.阶跃函数

2.4.2非线性激活函数(一般都为非线性)

1.sigmond函数

也称逻辑激活函数(Logic Activation Function)最常用于二元分类问题,存在梯度消失问题。

                ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        f(x)=\frac{1}{1+e^{-x}}

sigmond函数的导数

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        f'(x)=f(x)(1-f(x))

使用sigmond函数作为激活函数存在以下问题:

1)梯度饱和:当函数激活值接近于0或者1时,函数的梯度接近于0,在反向传播计算梯度过程中,每层残差接近于0,计算出的梯度也不可避免地接近于0.这样在参数微调过程中,会引起参数弥散问题,传到前几层的梯度已经非常接近0了,参数几乎不会再更新。

2)函数输出不是以0为中心的。我们更偏向于当激活函数的输入是0时,输出也是0的函数。

因为上面两个问题的存在,导致参数收敛速度很慢,严重影响了训练的效率。因此在设计神经网络时,很少采用sigmond激活函数。

2.tanh函数

tanh函数是拉伸过的sigmond函数,以0为中心,因此导数更陡峭,tanh比sigmond激活函数收敛得更快。

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        f(x)=tanh(x)=\frac{2}{1+e^{-2x}}-1

值域 -1到1

同样存在梯度饱和问题

3.ReLU函数

ReLU(Rectified Linear Unit修正线性单元)训练速度比tanh快6倍,当输入值为正数时,导数为1,因此不会出现sigmond函数反向传播时的挤压效应。

f(x)=0 x<0 f(x)=x x>=0

ReLU在训练时可能很脆弱,可能死亡。例如通过ReLU神经元的较大梯度可能导致权重更新过头,导致神经元再也不会因为任何数据点激活。如果这一情况发生了,经过这一单元的梯度从此以后将永远为0。如果学习率过高,40%的网络可能死亡,设置一个合适的学习率可以缓解这一问题。

相比sigmod函数和tanh函数,ReLU激活函数的优点在于:

1)梯度不饱和

梯度为1(x>0),因此在反向传播过程中,减轻了梯度弥散的问题,神经网络前几层的参数也可以很快的更新。

2)计算速度快

正向传播过程中,sigmond和tanh函数计算激活值时需要计算指数,而ReLU函数仅需要设置阈值。

收敛速度快

4.Leaky ReLU函数

第5章 注意力机制

学习人类忽略无关信息而关注重要信息-方法:使用掩码,通过权重将图片数据中关键的特征标识出来

附录

BP神经网络实现人脸识别程序等

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值