第二次作业代码部分
基础练习部分
在这里首先要熟悉pytorch基础操作,我们可以在Google云端硬盘上运行我们的pytorch代码

然后可以根据https://gaopursuit.oss-cn-beijing.aliyuncs.com/202010/AIexp/02%20-%20PyTorch%E5%9F%BA%E7%A1%80.mhtml在Micrsoft Edge内打开进行代码基础练习。比如通过pytorch输出一些数字数组、创建张量、创建tensor等基础操作。要注意一点


将v的变量类型通过dtype=torch.float进行强制转换。
要注意numpy 支持的数据类型比pytorch内置的类型要多,其中部分类型为pytorch内置类型。我们可以通过pytorch生成统计直方图,此时直方图内数据数量还较小,所以显示的不是很明显。

我们可以调节他的数据量,使其呈现出明显的正态分布。

螺旋数据分类
通过运行下列代码可以得到数据集

然后将数据集可视化

然后我们可以采用两种分类方法,即线性模型分类与构建两层神经网络分类。
1.线性模型分类

可以通过LOSS看出错误率很高,所以线性模型分类很难实现精准分类。那么我们可以使用构建两层神经网络来进行精准分类。
2.构建两层神经网络
与线性分类不同的是,构造两层神经网络需要用到ReLU激活函数

ReLU函数相比sigmod函数与tanh函数有以下几个优点
1)克服梯度消失的问题
2)加快训练速度
但是也有一定的缺点
1)输入负数,则完全不激活,ReLU函数死掉。
2)ReLU函数输出要么是0,要么是正数,也就是ReLU函数不是以0为中心的函数
而且在深度学习里最大的问题就是梯度消失问题,如果使用tanh与sigmod函数会发生严重的情况。使得训练网络收敛的越来越慢,而ReLU函数凭借其线性、非饱和的形式,可以使训练速度提升很多。
其余的代码与线性模型一模一样

我们可以看到其错误率降低了很多。

浙公网安备 33010602011771号