1. 代码练习
1.1 pytorch基础练习
PyTorch 是一种用于构建深度学习模型的功能完备框架,通常用于图像识别和语言处理等应用程序的机器学习。Pytorch 可以代替 Numpy 库,Tensors(张量),它相当于 Numpy 的多维数组。 Tensors 可以应用到 GPU 上加快计算速度。NumPy适用于一般的科学计算和数值操作,Tensors则更适用于深度学习任务。
官方文档:https://pytorch.org/docs/stable
1.1.1 定义数据使用torch.Tensor
对于torch.arange函数:如果未给出 dtype,则从其他输入参数推断数据类型。如果 start、end 或 stop 中的任何一个是浮点数,则 dtype被推断为默认值 get_default_dtype()。否则,dtype 被推断为 torch.int64。
1.1.2 定义操作
凡是用Tensor进行各种运算的,都是Function
最终,还是需要用Tensor来进行计算的,计算无非是
- 基本运算,加减乘除,求幂求余
- 布尔运算,大于小于,最大最小
- 线性运算,矩阵乘法,求模,求行列式
基本运算包括: abs/sqrt/div/exp/fmod/pow ,及一些三角函数 cos/ sin/ asin/ atan2/ cosh,及 ceil/round/floor/trunc 等具体在使用的时候可以百度一下
布尔运算包括: gt/lt/ge/le/eq/ne,topk, sort, max/min
线性计算包括: trace, diag, mm/bmm,t,dot/cross,inverse,svd 等
1.2 螺旋数据分类
1.2.1 构建线性模型分类
1.2.2 构建两层神经网络分类
在两层神经网络里加入 ReLU 激活函数以后,分类的准确率得到了显著提高,从50%到了90%。
2. 问题总结
1、AlexNet有哪些特点?为什么可以比LeNet取得更好的性能?
AlexNet是在LeNet的基础上加深了网络的结构,学习更丰富更高维的图像特征。
AlexNet的特点:
- 更深的网络结构
- 使用层叠的卷积层,即卷积层+卷积层+池化层来提取图像的特征
- 使用Dropout抑制过拟合
- 使用数据增强Data Augmentation抑制过拟合
- 使用Relu替换之前的sigmoid的作为激活函数
- 多GPU训练
AlexNet的架构与LeNet相似,但使用了更多的卷积层和更多的参数来拟合大规模的ImageNet数据集。
2、激活函数有哪些作用?
-
引入非线性:激活函数将线性变换的输入映射为非线性输出,从而使神经网络可以拟合更加复杂的非线性关系。
-
改善梯度传播:激活函数的选择可以对网络的梯度传播产生影响。某些激活函数(如relu)具有非饱和性质,可以缓解梯度消失问题,从而更好地进行反向传播优化
3、梯度消失现象是什么?
梯度消失现象是指在深度神经网络中,梯度在反向传播过程中逐渐减小,最终接近于零的问题。梯度消失会导致网络难以收敛或停滞在局部最优解。为了缓解梯度消失问题,可使用其他激活函数(如ReLU、Leaky ReLU等)替代Sigmoid函数、使用批量归一化等。
4、神经网络是更宽好还是更深好?
更宽的神经网络通常能够更好地捕捉数据中的复杂特征,更深的神经网络可以通过堆叠多个隐藏层来逐层提取和组合特征。但是目前研究主流是往更深发展。选择更宽还是更深的神经网络应该根据具体的任务和数据情况来决定,我们关心的应该是最优化组合,过宽或者过深的都不是最佳网络。
5、为什么要使用Softmax?
在分类问题中,我们希望将输入的实数值转化为类别的概率分布。通过使用Softmax函数,可以将实数值映射到[0,1]的范围内,并且概率总和为1。这样,我们可以根据最大概率来确定最终的分类结果,使得模型具有更好的分类和非线性表达能力。在一些优化算法中,需要计算每个参数对损失函数的梯度。使用Softmax函数可以将输出转化为概率分布,使得计算梯度更方便。
6、SGD 和 Adam 哪个更有效?
SGD是通过计算当前权重和偏置对损失函数的梯度来更新模型参数,较为简单性,可能会陷入局部最小值,并且对于具有不同尺度的特征可能会更新不均匀。Adam是一种自适应学习率的优化算法,它结合了动量法和自适应学习率调整。Adam根据每个参数的梯度和历史梯度来计算自适应学习率,从而使其在训练过程中更好地适应不同参数的变化。相比于SGD,Adam通常可以更快地收敛到更好的结果。
对于具体问题来说,SGD和Adam哪个更有效取决于数据集和模型的特点。在某些情况下,SGD可能会更快地收敛或找到更优解,尤其是在数据集较小或模型较简单时。而在大规模数据集或复杂模型的情况下,Adam通常能够更好地适应不同参数的变化,并且以更稳定的方式进行优化。