深度学习笔记(一)数学&编程基础
在本节中,将《Deep learning》一书的数学基础与机器学习基础知识与d2l.ai的相关章节结合,辅以相关的python编程来讲解。
1 数据处理&预处理
1.1 数据处理
==(这是一个预先介绍的概念)==
张量:一个可能有很多维的数组
torch.arange()
:创建一个均匀间隔值的向量
1 | x = torch.arange(10, dtype=torch.float32) |
x.shape
:查看张量的形状
x.reshape()
:改变张量的形状
1 | x.reshape(2,5) |
torch.zeros/ones
:创建全0/1张量
torch.randn
:从给定的概率分布中随机且独立地采样
1 | torch.randn(3,4) |
同样大小的张量可以直接进行四则运算与乘方运算
x.sum()
:张量内元素求和
索引:
1 | a = torch.rand(4,3,28,28) |
1.2 数据预处理
数据集读取:
1 | import pandas as pd |
数据准备:如果带有NaN,那么一种常见的启发方法是将其替换为相应列的均值
1 | inputs = inputs.fillna(inputs.mean()) |
转换为张量:
1 | import torch |
2 线性代数
2.1 标量、向量、矩阵和张量
标量:单独的数
向量:一列有序排列的数
矩阵:一个二维数组
张量:一个数组中的元素分布在若干维坐标的规则网格中
在深度学习中通常利用张量进行计算,张量可以在GPU上进行加速。
1 | x = torch.tensor(1.0) # 标量 |
2.2 矩阵和向量乘法
矩阵哈达玛积:C = A*B
$res_{ij}=A_{ij}B_{ij}$
标量+张量:张量的每个元素与标量相加
标量*张量:张量的每个元素与标量相乘
向量点积:torch.dot(x, y)
矩阵乘法:C = A@B
2.3 范数
$l_1$范数:torch.abs(u).sum()
$l_2$范数:torch.norm(u)
2.4 微积分
pytorch具有自动微分功能,x.grad
值得注意的是,这个grad是累积的,因此在进行反向传播前需要进行梯度清零