Pytorch学习笔记(一)

背景:

学习Pytorch的一个基本原因是由于业务需求,需要进行一些人脸识别技术的相关实践,最后综合对比,打算采用风头正盛的Pytorch这套算法包支持我的业务场景。

我的问题:

目前对于机器学习和深度学习领域仍旧是一知半解,基础知识不够扎实,所以在学习笔记中会不断地抛出一些问题,同时记录一些重要的知识点,并加入到自己的理解

Start:

1,张量

0维的张量是标量,1维的张量是向量,2维的张量是矩阵,张量=容器,是个几何概念,可以理解为一个数字水桶,之所以机器学习尤其是深度学习需要引入张量,是因为最合适的容器能够最完整且最轻便的表达所承载的数据。

2,梯度下降

最近看了一篇好的手记,非常推荐

从导数到方向导数和梯度,一步步理解深度学习中的梯度下降算法

这篇手记的作者很详细的介绍了梯度下降中的一些基本定义,这边再赘述下

1)导数:导数的意义是微小量变化的极值状态,其实就是反应了连续函数的变化率当f’(x)>0时,f(x)单调递增,减小x可以减小f(x),当f’(x)<0时,f(x)单调递减,增大x可以减小f(x)。


2)梯度下降方法:举个例子,线性回归的损失函数最小时,则为算法最优解,但是由于解析解的方式时间复杂度过高,当样本量很大时,训练时间过长,所以采用梯度下降的方式寻求最快的最优解。由此可知f(x-αf’(x)) < f(x),因此我们可以将x往导数的反方向移动一小步来减小f(x),即x:=x-αf’(x)。这就是梯度下降法

3)偏导:由于通常情况下,数据为多维度的,不仅一个自变量,这就导致了要综合考虑多个自变量的变化率,所以引入了偏导的概念,即多元函数其中一个自变量的变化率

4)真正的梯度:梯度就是一个向量,通过不同维度的偏导,通过计算夹角,以得到梯度下降最快的方向,这个方向的向量就是梯度的反向。

3,Pytorch的特点

1)自动求导:Pytorch是一个Python的深度学习库,从上边叙述其实是可以看到求导数,求偏导的重要性,而Pytorch一个比较重要的特性就是自动求导,这个特性可以省去很多麻烦,同时,计算过程是有状态的,可追溯的,可以再模型构建的过程中查看每一个变量的倒数,主要通过一个超参数进行开启即可。

2)立即计算:无需完成整个计算图就可以进行部分计算,更像是深度学习的debug,这个调试模式更加的友好。

3)类似于numpy:语法上很像传统的科学计算包numpy,这样就降低了学习成本,但是它提供了更多便捷的深度学习模块。

4)支持CPU和GPU:CUDA支持GPU的计算。

4,Pytorch实践

了解了一些背景之后,下一个任务是通过Pytorch进行一些相关实践,由于时间有限,只能边实践边进行各个模块的熟悉,现在需要实践的是计算机视觉相关应用,主要是使用卷积神经网络对人脸图像进行特征化,生成features,主要的分类类别人年龄和性别,然后通过实时捕捉人脸图像就行这两个类别的预测,下一篇会介绍这个实践过程。

 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值