第一次深度学习


第一次深度学习

1.PyTorch基本操作练习

1.定义数据

 创建一些张量

2.定义操作

凡是用Tensor进行各种运算的,都是Function

最终,还是需要用Tensor来进行计算的,计算无非是

  • 基本运算,加减乘除,求幂求余

  • 布尔运算,大于小于,最大最小

  • 线性运算,矩阵乘法,求模,求行列式

基本运算包括: abs/sqrt/div/exp/fmod/pow ,及一些三角函数 cos/ sin/ asin/ atan2/ cosh,及 ceil/round/floor/trunc 等具体在使用的时候可以百度一下

布尔运算包括: gt/lt/ge/le/eq/ne,topk, sort, max/min

线性计算包括: trace, diag, mm/bmm,t,dot/cross,inverse,svd 等

 以下为数据的分布直方图。可见当数据足够多时,正态分布会体现的非常明显。

 矩阵在两个维度上的拼接

2.螺纹旋转案例

本例中的螺旋数据不是线性可分的,所以需要转换输入数据的空间使得数据可以线性可分。

首先引入基本的库,初始化重要参数

 

初始化 X 和 Y。 X 可以理解为特征矩阵,Y可以理解为样本标签。 结合代码可以看到,X的为一个 NxC 行, D 列的矩阵。C 类样本,每类样本是 N个,所以是 N*C 行。每个样本的特征维度是2,所以是 2列。

在 python 中,调用 zeros 类似的函数,第一个参数是 y方向的,即矩阵的行;第二个参数是 x方向的,即矩阵的列。下面结合代码看看 3000个样本的特征是如何初始化的。

 

 1.构建线性模型分类

使用 print(y_pred.shape) 可以看到模型的预测结果,为[3000, 3]的矩阵。每个样本的预测结果为3个,保存在 y_pred 的一行里。值最大的一个,即为预测该样本属于的类别

score, predicted = torch.max(y_pred, 1) 是沿着第二个方向(即X方向)提取最大值。最大的那个值存在 score 中,所在的位置(即第几列的最大)保存在 predicted 中。下面代码把第10行的情况输出,供解释说明

此外,每一次反向传播前,都要把梯度清零,

 2.构建两层神经网络

 

 

相关