深度学习练习
PyTorch是一个python库,它主要提供了两个高级功能:
-
GPU加速的张量计算
-
构建在反向自动求导系统上的深度神经网络
-
先导入torch包
-
torch既可以定义为单个变量可以定义不同维度的数组,根据需要选用。

-
根据tensor.empty/rand/zeros/ones等的不同可以直接建立不同的数组数据。


-
torch关于矩阵的操作:

-
点积:m @ v:
第一次运行报错,给出的反馈是m的type为long,我就查了一下:
torch.tensor和torch.Tensor的对比;
前者是python的一个函数,有list,tuple,array,scalar等类;
后者是orch.FloatTensor的别名;
然后改一下m,得以正确运行。

-
矩阵元素相加,转置,构建一个等差数列式的数组(和matlab的方式差不多)

-
通过绘图工具分析rand生成的随机数的统计规律:正态分布。并且当生成的随机数足够多时,与正态分布的拟合度越高。

-
安装相应的工具并导入包。

-
初始化 X 和 Y。 X 可以理解为特征矩阵,Y可以理解为样本标签。 结合代码可以看到,X的为一个 NxC 行, D 列的矩阵。C 类样本,每类样本是 N个,所以是 N*C 行。每个样本的特征维度是2,所以是 2列。
在 python 中,调用 zeros 类似的函数,第一个参数是 y方向的,即矩阵的行;第二个参数是 x方向的,即矩阵的列。

-
根据上面的代码生成了一个螺旋图形。。。

11. 构建线性模型分类:使用 print(model) 把模型输出,可以看到有两层:
第一层输入为 2(因为特征维度为主2),输出为 100;
第二层输入为 100 (上一层的输出),输出为 3(类别数)。
从上面图示可以看出,线性模型的准确率最高只能达到 50% 左右(此处输出为0.504),对于这样复杂的一个数据分布,线性模型难以实现准确分类。


12. 构建两层神经网络分类可以看到,在两层神经网络里加入 ReLU 激活函数以后,分类的准确率得到了显著提高。达到了0.949。(虽然知道结果是这样的,但是具体的怎么实现还是有点迷,课下我再去看看吧。。。)



浙公网安备 33010602011771号