2024年夏季《深度学习》学习报告
姓名和学号 | XXX,XXX |
---|---|
本实验属于哪门课程 | XXX大学24夏《深度学习》 |
学习内容 | 深度学习基础 |
博客地址 | XXXXXXX |
一、学习目标
【第⼀部分:代码练习】
在⾕歌 Colab 上完成 pytorch 代码练习中的 2.1 pytorch基础练习、2.2螺旋数据分类,关键步骤截图,并附一些自己的想法和解读。
【第⼆部分:问题总结】
思考下面的问题:
1、AlexNet有哪些特点?为什么可以比LeNet取得更好的性能?
2、激活函数有哪些作⽤?
3、梯度消失现象是什么?
4、神经网络是更宽好还是更深好?
5、为什么要使用Softmax?
6、SGD 和 Adam 哪个更有效?
二、学习内容
列出实验的关键步骤、代码解析、截图。
2.1 pytorch 基础练习
-
Colab 练习链接:https://colab.research.google.com/drive/1oJTxrymgG5AHgwO-b0-vhOwOapuOhC45?usp=drive_link
-
基础练习部分包括 pytorch 基础操作
-
要求:把代码输⼊ colab,在线运⾏观察效果。
2.2 螺旋数据分类
-
Colab 练习链接:https://colab.research.google.com/drive/1EtSVevvNPnsiR04O9XDgWxqu2yjjOYEd?usp=sharing
-
⽤神经⽹络实现简单数据分类
-
要求:把代码输⼊ colab,在线运⾏观察效果
三、程序运行结果
-
2.1:https://colab.research.google.com/drive/1oJTxrymgG5AHgwO-b0-vhOwOapuOhC45?usp=drive_link
-
2.2:https://colab.research.google.com/drive/1EtSVevvNPnsiR04O9XDgWxqu2yjjOYEd?usp=sharing
四、问题总结与体会
描述实验过程中所遇到的问题,以及是如何解决的。有哪些收获和体会,对于课程的安排有哪些建议。
问题1
- 问题:在上述代码中遇到“expected scalar type Float but found Long" 的错误。
- 解决方法:
- 因为input也就是我们的v是torch.long类型的而weight是torch.float类型
所以在做矩阵乘法的时候这两种类型的不一致导致了报错
解决方法就是把v的dtype显示地设置成torch.float代码就成功运行了
问题2
-
问题:在上述代码中遇到“[Errno 2] No such file or directory: 'res/ziegler.png" 的错误。
-
解决方法:创建了此目录下的文件夹得以解决。图片是随机找的图片上传到res文件夹,感觉不会造成什么影响,但是如果没有res/ziegler.png的话就运行不了。
问题总结
1、AlexNet有哪些特点?为什么可以比LeNet取得更好的性能?
AleNet是真正意义上的深度卷积神经网络,并在2012年ImagNet竞赛中获得冠军。相比于LeNet网络,Alexnet深度更深,参数更多,应用更广泛。为了改善性能,引入了ReLU、Dropout和LRN等方法,并使用了双GPU加速。
2、激活函数有哪些作用?
让多层神经网络可以运作,拟合非线性函数,使神经网络可以对非线性数据进行建模。
3、梯度消失现象是什么?
由于误差通过梯度传播,前两层的参数不变,只有最后一层的参数才会改变,导致深层网络的参数难以更新。
4、神经网络是更宽好还是更深好?
深度——神经网络的层数
宽度——每层的通道数
更深的网络,有更好的非线性表达能力,可以学习更复杂的变换,从而可以拟合更加复杂的特征,更深的网络可以更简单地学习复杂特征。
网络加深会带来梯度不稳定、网络退化的问题,过深的网络会使浅层学习能力下降。深度到了一定程度,性能就不会提升了,还有可能会下降。
足够的宽度可以保证每一层都学到丰富的特征,比如不同方向,不同频率的纹理特征。宽度太窄,特征提取不充分,学习不到足够信息,模型性能受限。
宽度贡献了网络大量计算量,太宽的网络会提取过多重复特征,加大模型计算负担。
提升网络性能可以先从宽度入手,提高每一层的通道的利用率、用其他通道的信息补充较窄的层,找到宽度的下限,用尽量小的计算量得到更好的性能。
5、为什么要使用Softmax?
Softmax是激活函数的一种,常用于将一个向量(或一组实数)映射为一个概率分布,多分类问题就变成了一个概率分布函数拟合问题。即N分类互斥,只能选择其一时常用softmax。
6、SGD 和 Adam 哪个更有效?
Adam: 由于其易用性和快速收敛的特点,Adam非常适合在需要快速得到结果的场景中使用,特别是在计算资源有限或模型较复杂时。
SGD: 如果模型训练时出现过拟合,或者当你有足够的时间和资源来精细调整学习率时,SGD可能是更好的选择。对于大规模分布式训练,SGD的泛化能力可能更优。
总之,选择哪种优化算法取决于具体任务、模型的复杂性、可用的计算资源以及是否需要模型有更好的泛化能力。在实践中,可能需要尝试不同的优化算法,以找到最适合当前任务的选项。