一、代码部分
见Pytorch_Basic.ipynbhttps://gitee.com/gongchuanzheng/ouc/blob/master/week1/Pytorch_Basic.ipynb
二、问题总结
1、AlexNet有哪些特点?为什么可以比LeNet取得更好的性能?
AlexNet具有更深的网络结构,更大的卷积核和池化核,其激活函数使用的是ReLU函数可以解决梯度消失的问题,能够避免过拟合具有较强的泛化能力。引入了DropOut机制,训练时随机关闭部分神经元,避免过拟合。
因为AlexNet具有更深的网络结构,能够更好的学习复杂的特征。有更大的卷积核和池化,核可以提取更丰富的特征,相比于LeNet使用的Sigmoid激活函数ReLU函数既可以解决梯度消失问题,又能够加快计算速度。
2、激活函数有哪些作用?
激活函数的主要作用就是为神经网络引入非线性,如果没有激活函数,泽多层神经网络只能看成是一个线性模型。同时激活函数能将输出的范围缩小,例如sigmoid函数将输出的范围控制在了[-1,1]。
3、梯度消失现象是什么?
在神经网络中,在进行反向传播算法时,梯度在传播过程中会因为累乘而逐渐变小,并最终逐渐趋近于0,使得训练变的无效。
4、神经网络是更宽好还是更深好?
两者各有优点。
对于小数据集更宽可能会更好,能够提高网络的表达能力,但是会产生过拟合的现象。
对于大型的数据集,更深会更好,有更高效的性能,能够学习更为复杂的特征,同时有着很强的泛化能力。
5、为什么要使用Softmax?
Softmax函数可以将神经网络的输出转化为一个类别概率分布,方便进行多分类任务的训练和预测。对于每个输入样本,Softmax函数可以计算出它属于不同类别的概率,从而可以选择概率最大的类别作为输出。Softmax函数保证了输出的概率值都在0到1之间,并且所有概率值之和为1。
6、SGD 和 Adam 哪个更有效?如果还有其它问题,可以总结一下,写在博客里,下周一起讨论。
在不用的情况下SGD 和 Adam各有优缺点,
SGD它的核心思想是在每个训练样本上计算梯度,并使用该梯度来更新模型参数。SGD具有计算简单、内存占用少的优点。但是,SGD容易受到噪声和局部极小值的影响。
Adam可以根据每个参数的梯度和历史梯度平方的加权和来自适应地调整学习率,并利用动量来加速优化过程。Adam的优点是可以快速地收敛,而且对于大型数据集和复杂模型也有很好的表现。但是,Adam的训练速度较慢,内存占用较大,而且对于一些数据集和模型可能会出现过拟合的问题。