第二次作业代码部分

 

基础练习部分

在这里首先要熟悉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的类型弄错了。所以我们只需要这样改进即可。

将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函数凭借其线性、非饱和的形式,可以使训练速度提升很多。

其余的代码与线性模型一模一样

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

 

 

 

 

 

posted @ 2021-10-07 21:15  qiaa  阅读(53)  评论(0)    收藏  举报