- 博客(20)
- 收藏
- 关注
原创 NNDL 作业11
LSTM的网络结构和公式如下:表示了细胞状态从一个时间步到下一个时间步的梯度传递情况。在反向传播过程中,梯度需要从后向前传递,细胞状态的更新是 LSTM 中信息传递的关键路径。通过分析这个梯度,我们可以直接了解到过去的细胞状态对当前细胞状态的影响程度是如何在反向传播中体现的:梯度消失问题的核心是在反向传播过程中,梯度由于连乘过多小于的因子而快速衰减。在 LSTM 中,通过遗忘门控制,使得这个梯度传递因子可以接近1。这样就避免了像传统 SRN 那样,梯度在长序列的反向传播中快速衰减。
2024-12-17 20:06:44
1435
原创 NNDL 实验十六——循环神经网络(3)LSTM文本分类(附加注意力机制内容)
attention.py(根据自己需求修改)基于双向LSTM和注意力机制的文本分类。基于双向LSTM和注意力机制的文本分类。基于双向LSTM模型完成文本分类任务。
2024-12-16 13:46:50
189
原创 NNDL 作业10
在反向传播时,计算梯度涉及到对的多次求导,如果激活函数的导数在某些区域大于 1,那么随着时间步长的增加,梯度会呈指数级增长,导致梯度爆炸。(1)梯度裁剪:在计算梯度时,设置一个阈值,如果梯度的范数超过这个阈值,就将梯度按比例缩小。例如,如果计算出的梯度向量为,其范数为预设阈值),则将梯度更新为。(2)使用LSTM或GRU单元:LSTM和GRU是 RNN 的变体,它们通过引入门控机制来控制信息的流动,从而有效缓解梯度消失和梯度爆炸问题。
2024-12-02 21:19:10
335
原创 NNDL 实验十三——卷积神经网络(4)预训练ResNet-CIFAR10
【代码】NNDL 实验十二——卷积神经网络(4)预训练ResNet-CIFAR10。
2024-11-27 18:41:50
260
原创 NNDL 作业9
RNNCell是 PyTorch 中用于构建RNN的基本单元。它定义了一个时间步长上 RNN 的计算逻辑。它处理单个时间步的输入,并结合之前的隐藏状态来产生当前时间步的隐藏状态。它接收两个输入:当前时间步的输入数据(通常是一个张量,形状可以(batch_size,input_size))和上一个时间步的隐藏状态(形状通常是(batch_size, hidden_size))。输出是当前时间步的隐藏状态(形状为(batch_size, hidden_size))。RNN是一个更高层次的循环神经网络模块。
2024-11-26 23:17:08
847
原创 NNDL 作业8
这次作业涉及到推导的部分很多,乍一眼看上去很乱并且很难理解,但是通过实际推导、一步步计算,对这些CNN的知识有了更深的认识,学到了CNN前向计算和反向传播的转置关系。在计算复杂度这个部分刚开始也是一知半解,通过看例图然后仔细回想卷积的过程,在弄清了整体流程之后也就自然得出了计算公式。
2024-11-14 14:52:37
1714
原创 NNDL 实验十——卷积神经网络(1)卷积算子
步长# 零填充"""输入:- X:输入矩阵,shape=[B, M, N],B为样本数量输出:- output:输出矩阵"""new_X = torch.zeros([X.shape[0], X.shape[1] + 2 * self.padding, X.shape[2] + 2 * self.padding]) # 创建一个M'*N'的零矩阵。
2024-11-10 20:18:14
258
原创 NNDL 作业7
这次作业收获很多,先是了解了局部感知、权值共享、池化的概念及其好处和坏处,知道了什么是全卷积,知道了1×1的卷积核的作用,加深了对这些概念的理解。然后复现代码,实现了XO识别,亲手画出网络结构图,并计算输入输出图像的尺寸以保证代码编写无BUG。在对比有无池化层之后,认识到池化层对于减少计算的重要作用。接着找出了表现最优的模型(加了卷积层后的),并可视化卷积核、特征图,对卷积层有了更深一层的理解。最后通过动手编程,再次对低级特征、中级特征、高级特征有了更清晰的认识。
2024-10-30 21:06:24
804
原创 NNDL 实验七——前馈神经网络(3)自动梯度
import os# 初始化权重参数return a2按照4.3.1和4.3.5的形式,修改参数即可。
2024-10-26 12:15:33
214
原创 NNDL 实验六——前馈神经网络(2)二分类
神经网络的参数主要是通过梯度下降法进行优化的,因此需要计算最终损失对每个参数的梯度。由于神经网络的层数通常比较深,其梯度计算和线性分类模型的不同的点在于:线性模型通常比较简单可以直接计算梯度,而神经网络相当于一个复合函数,需要利用链式法则进行反向传播来计算梯度。第3步中的计算参数梯度也放到backward()中实现,更新参数放到另外的优化器中专门进行。实例化一个两层的前馈网络,令其输入层维度为5,隐藏层维度为10,输出层维度为1。使用测试集对训练中的最优模型进行评价,观察模型的评价指标。
2024-10-19 14:55:44
553
原创 NNDL 实验五——前馈神经网络(1)神经元-激活函数
Sigmoid型函数是指一类S型曲线函数,为两端饱和函数。常用的Sigmoid型函数有Logistic函数和Tanh函数,其数学表达式为。激活函数通常为非线性函数,可以增强神经网络的表示能力和学习能力。常用的激活函数有S型函数和ReLU函数。为了提高预测样本的效率,我们通常会将N个样本归为一组进行成批地预测。净活性值z再经过一个非线性函数f(⋅)后,得到神经元的活性值a。,神经元所获得的输入信号,即净活性值z的计算方法为。为N个样本的特征矩阵,z∈。为N个预测值组成的列向量。
2024-10-12 15:11:51
305
原创 NNDL 实验四——线性分类
本任务的数据来自3个不同的簇,每个簇对一个类别。基于RunnerV1,本章的RunnerV2类在训练过程中使用梯度下降法进行网络优化,模型训练过程中计算在训练集和验证集上的损失及评估指标并打印,训练过程中保存最优模型。实例化RunnerV2类,使用训练集和验证集进行模型训练,共训练80个epoch,其中每隔10个epoch打印训练集上的指标,并且保存准确率最高的模型作为最佳模型。其中X∈RN×D为N个样本组成的矩阵,y∈RN为N个样本标签组成的向量,y^∈RN为N个样本的预测标签组成的向量,。
2024-09-27 22:01:32
1964
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅