- 博客(19)
- 收藏
- 关注
原创 20240827Debug日记
错误来源是重装服务器后,服务器域名改变,但重装时没有删掉旧版本的vscode-server内容,新vscode server读写困难导致的。错误原因是我尝试同一个文件更改参数以后,在vscode里面再次点运行,来同时运行。导致串口分配了类似的,导致报错。修改方法:同一个文件不叠加运行;正式运行时候,尽量不在调试模式运行。修改方法:非常简单,在服务器上重开一个新的用户就可以了。
2024-08-28 05:18:05
898
原创 建立Argparse解析器
在深度学习代码与论文中看到经常使用解析器,可以简单理解为一个装有不同参数的盒子,可以往里写入参数,也可以从盒子里面取出参数。接下来可以通过:args.dataset取出刚刚存入的参数!2 填入参数(遵循以下格式)
2024-02-22 20:32:48
393
1
原创 卷积神经网络的代码
多输出通道时:torch.stack([corr2d_multi_in(X,k)for k in K],0)多输入通道时:对每个通道进行卷积再相加,假设函数为corr2d_multi_in(X,k)注意1*1卷积层的作用:相当于全连接层,用于调整通道数量与模型复杂度。池化层的作用:降低卷积层对位置的敏感,对空间降采样的敏感。
2024-02-19 22:16:17
490
1
原创 GPU的使用
GPU:torch.device('cuda')相当于torch.device('cuda:0'),访问第2个显存torch.device('cuda:1')torch.cuda.device_count()查看GPU数量。如何将张量转移到同一个GPU上?只有同一个GPU上才可以运算。如何将神经网路移动到GPU上?如何将张量保存到gpu上?
2024-02-19 21:27:52
356
1
原创 深度学习文件读写
即告诉模型在推理(inference)阶段运行时不要进行梯度计算和参数更新。load_state_dict是将模型恢复原本参数的内置函数。,进行模型在测试集或实际应用中的预测时使用。eval是做什么的?张量列表与字典均可,以下举例张量列表。方法是为了将模型设置为。
2024-02-19 21:09:55
356
1
原创 重要的组件
块层组成块以上自定义块可以进行更多功能实现区别nn.Relu()与F.relu(...)定义__init__()通过super().__init__()调用父类的__init__()nn.Linear(),nn.ReLu()均为块net=nn.Sequential(nn.Linear(),nn.ReLU(),nn.Linear())对于Sequential定义的模型检查第一个全连接层参数 net[1].state_dict()访问目标参数 net[2].bias
2024-02-19 20:45:04
366
1
原创 多层感知机--防止过拟合的方法
将线性函数权重向量的某个范数度量复杂度,因此将范数作为惩罚项加到最小化损失中。使用L2范数,对权重向量中大分量进行惩罚,使得筛选权重分布均匀的模型,L1范数将模型权重集中一小部分特征。为了让神经网络对噪声稳健,采取对每一层无偏注入噪声。,可以方便地为神经网络中的线性层进行统一的权重初始化操作。这有助于模型在训练过程中更好地收敛,并提高模型的性能。来按照指定的均值和标准差进行正态分布的初始化。会迭代遍历神经网络中的每个模块,并判断其是否为线性层。对于线性层,它会调用。函数会判断输入的模块类型是否为线性层。
2024-02-19 16:56:56
426
1
原创 3线性神经网络(分类问题)
独热编码(one-hot encoding):是一个向量,向量的分量与类别一样多,对应分量设置为1,其他为0。如y={(1,0,0),(0,1,0),(0,0,1)}可用来表示三分类问题softmax将未规范化的数字变为非负数且总和为1,满足概率论要求。softmax是非线性函数,softmax回归是线性回归模型。分类问题的损失函数从均值平方L2的MSELoss变为交叉熵损失(cross-entropy loss)
2024-02-19 15:39:18
579
1
原创 多层感知机
此模型具有1层隐藏层,每层256个隐藏单元(由于寻址方式等,将2的若干次幂作为层宽度)使用Fashion_mnist,一张图片784像素,视为784个输入特征和10个类别。训练误差与验证误差相近,都很大,欠拟合,应该增加模型复杂度。训练误差小,验证误差大,说明过拟合,可增加更多数据。为权重矩阵和偏置矩阵分配内存。1.1初始化模型参数。
2024-02-18 17:40:30
323
原创 3线性神经网络(线性回归的从零实现以及简洁编码模式)
6定义优化算法(如何更新参数,采用param-=lr*param.grad()/batch_size)-=保证在同一块内存中,/batch_size为了使得步长与batch_size无关。5定义损失函数(此处采用均方误差,计算loss)3定义模型(获得y_hat预测值)2读取数据集(采用batch)4初始化参数(此处为w,b)7训练(将以上函数连接起来)
2024-01-23 16:45:28
633
1
原创 数据结构图论--图的遍历(深度优先,广度优先)
图的遍历就是不重不漏地访问每一个结点,具体方法有深度优先和广度优先1 深度优先习惯于先访问下标小的结点,虽然都是等价的每个深度优先都对应一棵深度优先生成树,且不唯一一路向下走,走到没有下一个时进行回溯对于有向图,对于一个起点,可能无法回溯到所有结点,形成深度优先生成森林//图的遍历--把每个结点访问一次//深度优先搜索//公有dfstemplate<class TypeOfVer,class TypeOfEdge>void adjListGraph<TypeOfVer,
2022-05-27 11:42:10
276
原创 图的学习--邻接矩阵和邻接表建立图
1 图的大类定义template<class TypeOfVer,class TypeOfEdge>//边的个数即邻接矩阵中有元素的个数class graph{public: virtual void insert(TypeOfVer x,TypeOfVer y,TypeOfEdge w)=0;//w有权重,在结点x,y之间插入一条边 virtual void remove(TypeOfVer x,TypeOfVer y)=0;//在结点x,y之间删除一条边 vir
2022-05-27 10:06:05
584
原创 散列表与哈希算法
1 哈希算法哈希算法是建立元素与对应位置关系的映射将二叉查找树查找一个元素所需时间复杂度为O(logN)(树高)提高到哈希表O(1)(一一对应映射)整体是空间换时间2 哈希函数主要希望将元素分布均匀,减少冲突主要有以下4种2.1 直接地址法H(key)=a*key+b如:key=100;H(key)=key/100+2;得到映射位置为3;2.2 除留取余法这种最常见H(key)=key%p;p最好取质数,取质数分布均匀2.3 数字分析法如计算机IP地址有x1,x2…xn位值
2022-05-21 17:05:40
259
原创 二叉查找树
1 二叉查找树类的定义//建立集合template <class KEY,class OTHER>struct SET{ KEY key; OTHER other;};//建立动态查找表的类template<class KEY,class OTHER>class dynamicSearchTable{public: virtual SET<OTHER,KEY>*find(const KEY&x)const=0;
2022-05-20 15:13:44
313
原创 静态查找表
8集合与静态查找8.1 静态表的查找8.1.1无序表关键是把第0个位置空出来,从最后一位向前查找,返回0则不存在//建立集合template <class KEY,class OTHER>struct SET{ KEY key; OTHER other;};//建立无序表template<class KEY,class OTHER>void seqSearch(SET<KEY,OTHER>data[],KEY x,int size)
2022-05-20 11:54:52
310
原创 排序学习(快速排序,归并排序,基数排序
快速排序平均时间复杂度 O(NlogN)最差时间复杂度O(N2)**不稳定<class KEY,class OTHER>struct SET{KEY key;//集合元素的标识,之后会根据标识来排序 OTHER other;//此处可以放结构体来储存其他信息};//划分函数的实现//以第一个元素为划分元素,将从high到low的一个区间划分两半template<class KEY,class OTHER>void divide(SET<KEY,OTHE
2022-05-12 22:42:18
173
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人