学习pytorch

一、深度学习介绍

二.安装(未完成)

下载了anaconda ,无法安装cuda

使用矩池云租用机器,硬件信息如下

 

提供了Jupyter记事本,非常方便

保证动起手跟着学。

也可以考虑fq使用谷歌的colab

三、数据操作+数据预处理

N维数组是深度学习的主要数据结构

创建数组:(所需三样)

1.形状2.每个元素的数据类型3.每个元素的值

访问元素:1.某行某列:[1,2]

2 .某行:[1,:]

  1.  某列:[:,1]
  2. 子区域:[1:3,1:](:后面是开区间)
  3. 子区域[::3,::2](::代表每x取一个)

数据操作:  导入torch:import torch

1.张量表示一个数值组成的数组:

 

2.shape属性访问形状和元素总数:

 

 

(标量)

3.改变形状而不改变数量值,用reshape函数

     

 

4.创建全0、全1

     

 

 

5.使用包含数值的python列表为新元素赋值

 

6.常见算数运算符(+,-,*,/和**)都可以按元素运算(*不是矩阵乘法,dot才是

7.  把多个张量合并(dim=0,第0维合并)

 

上面用到的x.clone(),将y克隆成x,同时保证y与x无关(内存),修改y不会影响x

8.逻辑运算符:x==y

 

 

9.求和x.sum()

(得到的是一个标量,是所有元素和)

10.形状不同,可以通过广播机制按元素操作

 

(所谓广播机制,就是先将两个张量变为形状相同,都变为3*2矩阵,再按元素相加

11.利用[-1]选择最后一个元素,如果是二维,选择最后一行

 

12.id用来查看内存

注意:y=y+x不是原地操作,为其分配了新的内存。

那么如何进行原地操作?

 

这样前后内存相等

还有,如果后续不会重复使用x,则可以使用x[:]=x+y或x+=y减小内存开销,前后x内存相等、

数据预处理(读取CSV文件,填充数据再表示为tensor)(所谓CSV是指,每一行是一个数据,用’,’分开)

(使用pandas库,其中包含可以读取CSV文件的函数pd.read_CSV()

  1. 先创建一个人工数据集,存储在CSV文件中

 

加载数据集:

 

2.处理缺失数据,包括插值与删除(对于int类型的缺失,将其填入其余值的平均值)

对于string类型的,将缺失的看为类,“NAN”看为一个类,用1和0表示是否是本类(变为纯0,1的矩阵)

现在所有的值都为数值类型,可以转换为张量格式

 

四、线性代数(一些基本的线代知识)

主要注意一点,按一个维度求和之后,会丢掉那个维度

例如:

按维度求和的示意图

 

(不知道为什么试验发现并未丢掉维度

可以通过keepdims=True来确保不会丢掉维度

五、矩阵计算

导数

亚导数:将导数拓展到不可微的函数,例如y=|x|.

梯度:将导数拓展到向量

  • 六、自动求导

链式法则

链式法则可以拓展到向量

  

计算图:

·将代码分解为操作子

·将计算表示为无环图

如例1.

(正向)

·显示构造

自动求导的模式:

·链式法则

·正向累积

·反向累积,又称反向传递

 

反向:从相反方向执行图,去除不需要的枝

 

自动求导的实现:

对y=2xTx求导,关于列向量x求导

通过调用反向传播函数来自动计算y关于x每个分量的

默认情况下,pytorch会累积梯度,需要清除之前的值

通过命令:x.grad.zero_()

深度学习中,目的是批量中每个样本单独计算的偏导数之和。

(向量函数求导很少,多数是标量求导)

清零后,计算出y=x*x的梯度

七、线性回归+基础优化算法

衡量预估质量

·比较真实值和预估值

·假设y是真实值,y’是预估值,

L(y,y’)=1/2(y-y’)2,叫做平方损失

训练数据

·搜集一些数据来决定参数值(权重和偏差)

·这被称为训练数据

·通常越多越好

·假设有n个样本:

X=[x1,x2...xn],y=[y1,y2...yn]T

参数学习

·训练损失

L(x,y,w,b)=1/2n||y-xw-b||2

·最小化损失来学习参数

显示解

·将偏差加入权重

L(x,y,w)=1/2n||y-xw||2

·损失是凸函数

总结

·线性回归是对n维输入的加权,外加偏差

·使用平方损失来衡量预测值和真实值的差异

·线性回归有显示解

·线性回归可以看作是单层神经网络

基础优化方法

梯度下降

·挑选一个初始值w0

·重复迭代参数t=1,2,3

Wt=Wt-1-n(L/Wt-1)

·沿梯度下降方向将增加损失函数值

·学习率:步长的超参数(学习率的选择不能太长不能太小)

小批量随机梯度下降

·在整个训练集上算梯度太贵

·可以随机采样b个样本i1...ib来近似损失(b是批量大小,另一个重要的超参数)

总结:

·梯度下降通过不断沿着反梯度方向更新参数求解

·小批量随机梯度下降是深度学习默认的求解算法

·两个重要的超参数是批量大小和学习率

马上开始从零开始实现线性回归

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值