2.1 pytorch 基础练习

定义数据测试

 

【第二部分】代码练习_激活函数

 定义操作测试

【第二部分】代码练习_线性模型_02

 

其中执行m@v时报错

【第二部分】代码练习_线性模型_03

 

该处v为long类型与参数类型float不符,修改后执行

【第二部分】代码练习_转置_04

 

transpose和permute中转置过程理解

  • transpose:只能选择tensor中两个维度进行转置

    (transpose(X,Y)函数和矩阵的转置是一个意思,相当于行为X轴,列为Y轴,X轴和Y轴调换了位置;

      X轴用0表示,Y轴用1表示)

  • permute:可以让tensor按照指定维度顺序(维度的个数就是该tensor的维度数)进行转置

只要这两个函数用过后,tensor都会变得不再连续,就不可以使用view()

randn函数随着操作数的增多逼近正态分布

【第二部分】代码练习_优化算法_05

 

拼接函数torch.cat

torch.cat() 和python中的内置函数cat(), 在使用和目的上,是没有区别的,区别在于前者操作对象是tensor。


2.2 螺旋数据分类

  • 计算出三类样本并输出结果

【第二部分】代码练习_线性模型_06

 

  • 线性模型分类

【第二部分】代码练习_激活函数_07

 

  • 两层神经网络分类

【第二部分】代码练习_激活函数_08

 

线性模型分类准确度

【第二部分】代码练习_转置_09

 

两层神经网络分类准确度

【第二部分】代码练习_线性模型_10

 

对比两者,在两层神经网络里加入 ReLU 激活函数以后分类的准确度由51.4%提高到了94.3%,在两层神经网络里加入 ReLU 激活函数,也改变了优化算法。在采用ReLU激活函数时,使用的是Adam优化算法,当继续使用SGD优化算法时,准确率只能提高5%左右。而如果线性模型分类中也使用Adam优化算法时,准确率仍在50%左右,故使用Relu激活函数与Adam优化算法可以很好的提高分类准确率。