自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(23)
  • 收藏
  • 关注

原创 实验17 优化算法的比较分析

SGD轨迹:“之”字形因为在此函数中梯度的方向并没有指向最小值的方向,SGD只是单纯的朝着梯度方向,放弃了对梯度准确性的追求,会使得其在 函数的形状非均向(比如y方向变化很大时,x方向变化很小 ),能迂回往复地寻找,效率很低。简单易实现收敛速度慢,特别是在凹谷形函数中;缺乏方向调整,导致路径震荡。AdaGrad由于y轴方向上的梯度较大,因此刚开始变动较大,但是后面会根据这个较大的变动按比例进行调整,减小更新的步伐。因此y轴方向上的更新程度被减弱,“之”字形的变动程度有所衰减。

2024-12-24 21:31:14 745

原创 DL作业11 LSTM

Ok,我们已经完成了前向传播的过程,计算顺序是计算遗忘门、输入门、候选记忆单元,然后根据前一个时间步的记忆单元、遗忘门、候选记忆单元、输入门更新记忆单元。计算输出门,计算隐层输出,计算预测输出。调用numpy实现得到的结果和题目给的答案一样,但是直接调用nn.LSTM和nn.LSTMCell得到的结果和答案不一样,是因为在这个函数里面,候选记忆单元的激活函数和记忆单元经过输出门之前的激活函数都是tanh,但是在例子中为了简单,就直接使用了线性函数作为激活函数。

2024-12-20 17:11:34 1111

原创 实验16 基于双向LSTM和注意力机制完成文本分类实验

在这个实验中,我研究了一下dataset和dataloader,dataset是和dataloader一起使用的。当我们拿到了数据集比如是train_data,首先需要将train_data放入自定义的dataset函数,这里面必须包含三个函数,分别是init函数,getitem函数和len函数。下面是一个实例:# 假设 data 是一个包含文本和标签的元组# 进行必要的数据处理。

2024-12-17 17:02:01 2121

原创 实验15 验证LSTM模型的长程依赖

创建一个PyTorchLSTM模型,其中init函数中定义的lstm直接调用nn.LSTM。然后调用 compare_models函数,在里面对两个模型进行对比,对比他们的模型在一次前向传播的计算时间、运行60次的平均运行时间、LSTM和PyTorch LSTM模型的参数总数、模型输出两个模型在单次运行时的执行时间非常接近,差异非常小。在多次运行的平均时间上,自定义 LSTM 的平均时间明显较长。这表明,在连续多次运行时,自定义实现的 LSTM 模型效率较低。

2024-12-10 17:17:35 990

原创 实验14 RNN的记忆能力和梯度爆炸实验

二 梯度爆炸实验。

2024-12-10 15:02:28 727

原创 DL作业10-BPTT

如果 时刻 t 的输出 yt 依赖于 时刻 k 的输入 xk,当间隔 t - k 比较大时,简单神经网络很难建模这种长距离的依赖关系,称为长程依赖问题(Long-Term ependencies Problem)通过这个实验,我更加了解了BPTT,通过得到的公式,知道了RNN存在长程依赖问题,主要是梯度消失问题,当然存在一些改进,但是不如LSTM优秀,预知后事如何,请看下一个作业。全部时刻共享同一个U,反向传播时,每个时刻的U都需要计算,所以在计算第k个时刻对参数u的梯度时,要累加1到k个时刻的梯度。

2024-12-09 13:44:53 825

原创 实验13 使用预训练resnet18实现CIFAR-10分类

1.预训练模型:预训练模型是指在一个大规模数据集上(如 ImageNet、COCO 等)经过训练的模型。这个模型已经学习到了一些通用的特征,比如图像中的边缘、纹理、颜色、形状等,或者文本中的语法、词汇关系等。这些特征是从数据中自动学习的,并且在很多不同的任务中都有用。例子:在图像分类任务中,ResNet、VGG、Inception 等深度神经网络在 ImageNet 上经过训练后,它们可以识别成千上万种不同的物体。

2024-12-03 10:48:04 2398

原创 DL作业9-RNN SRN

总结RNN,从内部实现和函数使用两方面总结nn.RNNCell内部实现的就是输入的全连接加上隐层的全连接,经过激活得到下一个隐层(也是输出)定义函数时需要初始化的参数为输入维度和维度,这样输入的权重和偏置、隐层的权重和偏置都能确定,输入的权重和偏置的维度是input_size*hidden_size,隐层的权重和偏置的维度是hidden_size*hidden_size。

2024-11-30 12:10:52 941

原创 CNN-3 基于残差网络实现手写数字识别

详细解释一下残差块中两个卷积层,第一个卷积层对输入进行卷积,填充为1确保特征图大小改变是因为步长变化,所以第一层卷积会接受一个stride参数;但是第二层卷积保持特征图大小和通道数不变,步长和填充都设置为1。然后还会定义一个shortcut函数,如果残差块得到的F(x)和输入x的输入通道和输出通道数不相等或者第一层卷积接受的stride参数不为1(特征图大小变换),那么shortcut函数会修改为用 nn.Sequential() 来定义卷积层和批归一化层来修改输入x和F(x)的大小和通道一样。

2024-11-26 15:59:48 1099

原创 CNN-2 基于LeNet实现手写数字识别实验

利用datasets.MNIST()函数下载数据集,这个函数中需要传一些参数,其中包括transform,就是对数据进行转换,所以定义了一个transform,其中包含了调整图片大小为32*32,转换为张量,标准化为均值0,标准差为1。下载完数据集并标准化之后,开始进行数据集划分,利用random_split函数将数据划分为train_set、val_set、test_set。最后进行数据加载,batch_size设为64。

2024-11-19 14:19:44 1786 1

原创 DL作业8-卷积、导数、反向传播

1.习题5-2 证明宽卷积具有交换性, 即公式(5.13)2.习题5-4 对于一个输入为100 × 100 × 256的特征映射组, 使用3 × 3的卷积核, 输出为100 × 100 × 256的特征映射组的卷积层, 求其时间和空间复杂度. 如果引入一个1 × 1卷积核, 先得到100 × 100 × 64的特征映射, 再进行3 × 3的卷积, 得到100 × 100 × 256的特征映射组, 求其时间和空间复杂度3.习题5-5 对于一个二维卷积, 输入为3 × 3, 卷积核大小为2

2024-11-13 11:21:50 325

原创 CNN-1 卷积运算、卷积算子

自定义最大池化算子函数def max_pool2d(input, kernel_size, stride)的输入是输入特征图,卷积核大小和步长在函数体中,利用input.shape分别获取输入的特征图的batch_size、通道数channel高度heights和宽度width。然后利用公式计算池化之后的特征图大小。初始化特征图为全零张量。

2024-11-12 13:20:13 1138

原创 fnn-5 实战利用fnn实现鸢尾花分类

我们从山上的某一点出发,找一个最陡的坡走一步(也就是找梯度方向),到达一个点之后,再找最陡的坡,再走一步,直到我们不断的这么走,走到最“低”点(最小花费函数收敛点)。批梯度下降法(Batch Gradient Descent)针对的是整个数据集,通过对所有的样本的计算来求解梯度的方向。优点:全局最优解;易于并行实现;缺点:当样本数目很多时,训练过程会很慢。每次利用batch_size样本代替所有样本计算梯度。

2024-11-05 14:34:04 797

原创 fnn-4 优化问题

实现一个神经网络前,需要先初始化模型参数。如果对每一层的权重和偏置都用0初始化,那么通过第一遍前向计算,所有隐藏层神经元的激活值都相同;在反向传播时,所有权重的更新也都相同,这样会导致隐藏层神经元没有差异性,出现对称权重现象。对每一层的权重和偏置都初始化为0,查看对称权重现象对模型训练的影响。构建模型继承自nn.Module类,init函数中定义3个全连接层linear1、linear2、linear3,然后利用nn.init.constant_初始化权重和偏置为0。

2024-11-05 14:04:05 637

原创 DL作业7-利用CNN进行XO识别

设置epoches大小为10,也就是训练10次,每次训练把一个批次(64个样本)的数据放入模型,经过模型得到一个预测结果,预测结果与真实标签计算得到损失,先梯度清零,然后损失反向传播计算损失对于每个参数的梯度,然后利用优化器更新参数。然后遍历weights_keys,如果键值的名称是“conv1.weight”,执行weight_t = model.state_dict()[key].numpy()转化为numpy数组,他的形状是9,1,3,3,表示卷积核的数量是9,通道是1,大小为3*3,。

2024-11-01 18:00:51 813

原创 fnn-3 自动梯度计算

只需关注模型的结果,无需管理梯度和参数更新class RegressionModel(nn.Module):#所有模型都需要继承自nn.Moduleout = torch.sigmoid(out) # Logistic 回归的 sigmoid 函数return out就是这个自定义隐层层数和神经元个数就是直接定义全连接层和forward函数对应修改即可,与上述代码思路一样,就不再粘代码了隐层与神经元数量:增加隐层和神经元数量可以提升模型的拟合能力,但可能导致过拟合,通常需要配合正则化方法使用。学习率。

2024-10-27 21:55:14 1004

原创 fnn-2 实现二分类

【代码】fnn-2 实现二分类。

2024-10-22 16:55:32 154

原创 DL作业6-探索不同卷积核的作用

用自己的语言解释卷积、卷积核、特征图、特征选择、步长、填充、感受野。

2024-10-20 00:31:29 773

原创 fnn-1净活性值与激活函数

【代码】fnn-1。

2024-10-12 21:46:48 190

原创 DL作业4-BP算法

梯度消失是指在深层神经网络中,随着反向传播的进行,层与层之间的梯度(即损失函数相对于每个参数的导数)逐渐变得非常小,甚至趋近于零。在训练过程中,模型的损失不断减小,但是减小的速度比较慢,是因为当输入的值非常大或者非常小的情况下,sigmoid函数的梯度会非常小,存在梯度消失问题导致参数更新速度减慢。模型训练时,学习率、损失函数的选择很关键,因为学习率的过大过小或者损失函数选择不合适都会导致模型训练的效果不好。训练时,输入套上sigmoid得到输出,根据mse_loss计算损失,反向传播前梯度清零。

2024-10-09 00:43:15 526

原创 实验4 线性分类

3基于softmax实现对鸢尾花数据的分类。1基于logistic实现二分类。2基于softmax实现多分类。

2024-10-08 00:28:34 275

原创 实验3-线性回归

【代码】线性回归实验3。

2024-09-24 17:09:57 125

原创 实验2-张量

【代码】实验中的代码1。

2024-09-17 17:10:52 196

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除