- 博客(206)
- 资源 (2)
- 收藏
- 关注
原创 一些经典CNN模型的笔记
文章目录一、关于AlexNet的一些记录池化疑问二、VGGNet三、ResNet一、关于AlexNet的一些记录池化疑问在AlexNet的第5层卷积之后,池化层是采用了3*3大小的窗口,将13*13的特征图池化为6*6的的特征图。但在我的印象中池化层的stride应该等于窗口大小,但这里如果采用stride=3来计算(按公式1-1计算)得到的结果将是4*4的特征图不可能是6*6,这点可以通过以下实验证明。outputSize=Nw+2p−FS+1(1-1)outputSize = \cfrac{N_
2022-04-27 16:34:28
602
原创 在pytorch中使用自己的数据集,dataset的写法
文章目录引入方法测试总结引入在学习pytorch的过程中,用的一直都是教程中别人定义好从网上直接下载的数据集,不需要进行任何的处理,数据和标号都可以直接获取。但是,我想要进行自己的研究大多数情况需要我们自己收集数据并进行一些预处理在制作成数据集,然后通过pytorch读入后用来训练模型。这里记录的是一次对上万张验证码图片组成的数据集(标号是其名称)制作pytorch数据集的尝试。部分数据如下:大多数教程中并没有讲这些图片数据和标签是如何装载到torch中的,在分析了一个github项目https:
2022-03-22 22:52:37
3226
原创 由mnist引发的思考,pytorch中的交叉熵误差函数nn.CrossEntropy做了什么?
文章目录引入实验一实验二结论引入在MNIST手写体实验中,关于在交叉熵损失函数计算误差时,神经网络输出为10个,当标签设置为何种情况时才能满足交叉熵损失函数的计算公式,来探究这个问题。实验一直接打印出每个数据的标签内容代码如下:import torchfrom torchvision import datasets, transformstransform = transforms.Compose([ # 设置预处理的方式,里面依次填写预处理的方法 transforms.ToT
2022-03-12 19:29:01
389
原创 卷积神经网络以LeNet网络为例的手写体识别
参考书目:Pytorch深度学习入门,作者:曾芃壹文章目录卷积卷积过滤器池化实战:手写体识别准备数据集torchvision构建LeNet模型训练函数模型保存、读取和测试功能函数训练前准备、数据加载、模型保存的运行代码卷积卷积我们把输入层看做二维的神经元,如输入的是28*28的图片则可以看做28*28的二维神经元,每个节点对应图片在这个像素点的灰度值。在传统神经网络中,我们把输入层的每一个节点都连接到隐含层的每一个节点上,而这里我们使用一个过滤器例如5*5的一个小网格在28*28的图片上从左上角
2022-02-15 23:23:27
1737
1
原创 pytorch学习线性回归与非线性回归,以及理解nn.linear()和ReLU激活函数
参考书目:Pytorch深度学习入门,作者:曾芃壹文章目录线性回归线性模型与目标函数优化批量输入代码实践大规模数据实验神经网络实现线性回归非线性回归激活函数人工神经网络详解nn.linear()的原理浅谈ReLU激活函数在本例中的作用线性回归线性模型与目标函数这次我们使用直线KaTeX parse error: \tag works only in display equations来拟合几个离散点,个点的 值如下x(i)x^{(i)}x(i)y(i)y^{(i)}y(i)y^(i)
2022-01-17 17:36:46
4530
1
原创 pytorch中Tensor的简单学习
参考书目:Pytorch深度学习入门,作者:曾芃壹文章目录Tensor基本创建方法Tensor快速创建方法常用数学操作线性代数运算连接和切片变形CUDA加速自动微分基本原理向前传播反向传播非标量输出TensorTensor,中文为张量,是pytorch中最基本的数据类型#导入torch包import torch基本创建方法#torch.Tensor()传入参数构造矩阵x=torch.Tensor(2,4)print(x)print(x.type())print(x.dtype)
2022-01-14 00:40:43
787
原创 机器学习对数学模型的简单实践
参考书目:数学教科书,作者:我妻幸长文章目录回归与过度学习回归与分类多项式回归最小二乘法利用梯度下降法最小化误差分类与逻辑回归参数优化生成数据实现逻辑回归小结神经网络概述人工智能、机器学习、神经网络神经元模型神经元网络学习机制单一神经元的学习正向传播表达式权重与偏置的更新列出公式输入与正确数据正向传播和反向传播迈向深度学习多层神经网络的正向传播和反向传播回归与过度学习回归与分类模型(用数学公式表示的定量规则)Y=f(X)Y=f(X)Y=f(X)来捕捉数据的倾向,Y={y1,y2,⋯ ,ym}Y=\{
2022-01-12 23:38:33
650
原创 有关机器学习的概率和统计简略学习笔记
参考书目:数学教科书,作者:我妻幸长什么是概率P(A)=anP(A)=\frac{a}{n}P(A)=na其中P(A)是事件A发生的概率,a是A事件发生场景的数量,n是所有场景发生的数量例如抛硬币,有正面和反面两种情况则n=2,若A代表正面的情况,a=1,即P(A)=12P(A)=\frac{1}{2}P(A)=21补事件P(Aˉ)=1−P(A)P(\bar{A})=1-P(A)P(Aˉ)=1−P(A)例如掷骰子,两个骰子点数之和为5的事件是A,则P(A)=19P(A)=\frac{1
2022-01-06 20:34:57
1188
1
原创 外部排序优化
目录败者树一、定义:二、败者树在多路平衡归并中的应用小结:置换-选择排序小结:最佳归并树一、计算磁盘读写次数二、以R1--R5为叶结点构造2路归并的最佳归并树(参考哈夫曼树的构造)三、多路归并的情况四、如果减少一个归并段要补充几个虚段?小结:下一篇:败者树为了优化多路平衡归并带来的负面效果用败者树选出最小的元素一、定义:如上图,天津饭是冠军,但是天津饭退赛(被选为最小的)派大星代替参赛,此时不用重新比一遍,
2021-07-21 01:05:28
461
1
原创 排序之外部排序
目录一、外存于内存间的数据交换外部排序思想:二、操作步骤优化点:归并趟数1、多路归并2、减少r小结:下一篇:一、外存于内存间的数据交换读入修改写回外部排序思想:二、操作步骤1、使每个磁盘中的块内都有序先读入两块数据进内存使用内部排序排好序后(指的是这里进入6内存的6个数全部有序,称为一个归并段)通过输出缓冲区写回磁盘依次往后进行此操作,使得全部局部有序...
2021-07-20 23:25:21
376
原创 排序之基数排序
目录思想:案例:效率分析:应用:小结:下一篇:思想:例如最高3位数的排序,则百位影响最大,个位影响最小案例:第一趟分配第一趟收集第二趟分配(按十位)第二趟收集第三趟分配(按百位)第三趟收集总览:效率分析:从该图可看出,收集一个Qi的队列只需要O(1)的时间,则一趟是O(r)稳定性:稳定应用:适用场景:小..
2021-07-20 23:21:17
122
原创 排序之归并排序
目录归并思想:二路归并过程整体代码效率分析小结:下一篇:归并思想:2路归并4路归并m路归并二路归并过程核心操作整体代码效率分析空间复杂度来源于辅助数组O(n) (递归带来的log2n省去)小结:...
2021-07-20 23:19:27
147
原创 排序之堆排序
目录一、堆的定义二、建立大根堆(小根堆会得到递减序列)三、进行排序代码实现:小结:四、堆中插入新元素五、堆中删除元素小结:下一篇:一、堆的定义理解为完全二叉树二、建立大根堆(小根堆会得到递减序列)非终端结点编号为n/2向下取整代码:三、进行排序87与堆底元素互换后,发现该堆不是个大根堆,要将该堆调整,将09下沉调整后第一趟处理完成依次处理完堆中所有元素最后结果:...
2021-07-20 23:17:50
224
原创 排序之快速排序
目录算法思想:过程:效率分析小结:下一篇:算法思想:过程:low元素开始所指的元素作为基准元素,且此时基准元素的位置表示为空low的左边要都小于基准元素,high右边大于基准元素从high开始向左移动,若high所指小于基准元素,则把该元素移动到low指针所指的空位置,并开始移动low元素如果low所指小于基准元素,high大于基准元素则不需要移动,直接low++,high++如果low元素所指大于基准元素则与high所指的空元素交换...
2021-07-20 23:14:34
170
原创 排序之冒泡排序
目录定义:代码实现:性能分析:小结:下一篇:定义:不断比较相邻两个元素的大小,来使得前面的元素小于后面的元素相同的元素不交换保证稳定性代码实现:性能分析:稳定性:稳定适用于链表小结:...
2021-07-20 23:12:42
137
原创 排序之希尔排序
目录一、定义代码实现下一篇:一、定义完成后第二趟完成后第三趟(d=1了就是对整个表进行直接插入排序)考试中:代码实现空间复杂度为O(1)稳定性小结:...
2021-07-20 23:10:20
103
原创 排序之插入排序
目录算法思想:代码:分析效率:小结:下一篇:算法思想:代码:带哨兵的写法分析效率:空间复杂度O(1)时间复杂度:最好情况最坏情况平均情况优化(折半查找确定位置,减少了比较次数)为了保证稳定性代码:整体时间复杂度任然是O(n^2)对链表的插入排序实现略,由于链表的特性移动元素的次数比顺序表少很多,但是仍是O(n^2)小结:...
2021-07-20 23:09:01
108
原创 排序的定义
目录一、定义二、评价指标三、排序的分类小结:下一篇:一、定义二、评价指标1、空间复杂度2、时间复杂度3、稳定性稳定好还是不稳定好得看实际需求三、排序的分类小结:...
2021-07-20 23:07:23
191
原创 散列表(Hash Table)
目录一、定义二、处理冲突的方法1、拉链法(java中的HashSet等)装填因子三、设计散列函数1、除留余数法2、直接定址法3、数字分析法4、平方取中法5、开放定址法(1)线性探测法(2)解决聚集问题:平方探测法(3)伪随机序列法(4)再散列法(使用多个散列函数)小结:下一篇:一、定义示例:当取余进行到1时,1已经存了一个元素了当不同的关键字通过散列函数映射到同一个值,则他们为“同义词”,确定的位置已经存放了其他元素..
2021-07-18 16:43:04
129
1
原创 查找之B+树
目录一、定义二、B与B+对比下一篇:一、定义B+树示例思想很想分块查找符合以下条件:其中记录代表的是该结点对应存储的各种数据记录如学生信息(所以叶结点包含所有的关键字,也是n个关键字对应n个分支),除了叶子结点,其他结点都是起到一个索引作用为什么当根结点不是叶子时必须有两颗子树查找成功的例子:查找失败的例子无论查找成功或失败,最终一定要走到最下面一层结点二、B与B+对比B+树在磁盘读取以及索引上...
2021-07-17 00:30:21
222
原创 查找之B树
一、将二叉查找树拓展为m叉//5叉排序树的结点定义struct Node{ElemType key[4];//最多4个关键字 struct Node *child[5];//最多5个汉字int num;//结点中有几个关键字 }; 每个分叉就是一个查找范围紫色为失败结点查找一个元素查找失败的例子:如何保证查找效率1、若每个结点关键字太少,导致树变高,要查找更多层结点,效率变低注:是向上取整例如5叉就除了根结...
2021-07-16 23:37:45
296
1
原创 查找之分块查找
目录分块查找思想:分析二分查找在查找索引时的过程查找效率分析:小结:思考:下一篇:分块查找思想:low和high是区间范围,maxValue是区间最大值每次查找先查找索引表,找到索引表中区间最大值第一次大于该key的区间(可顺序、可折半),再在该区间中通过顺序查找找到key分析二分查找在查找索引时的过程情况一:查找目标是某个区间最大值,正常二分查找即可情况二:查找目标不是区间最大值那么最后一定会有mid=low=high如果:...
2021-07-15 00:48:56
322
1
原创 查找之折半查找
目录代码:效率分析:构造查找判定树小结:思考:下一篇又叫二分查找,仅适用于有序顺序表(链表不行)low在表头,high在表尾,mid=(low+high)/2或者low+(high-low)/2代码://二分查找//SSTable是有序表,key是关键字可以是任意类型 int Binary_Search(SSTable L,int key){int low=0,high=L.TableLen-1,mid;while(low<=high...
2021-07-15 00:02:12
1210
1
原创 查找之顺序查找
目录思想:代码:查找效率分析:优化:小结:下一篇:思想:从头到尾依次查找通常用于线性表(同样能用在链表)代码://顺序查找typedef struct {//查找表结构 int *elem;//动态数组基址 int TableLen;//表长度 }SSTable;//省略线性表创建添加删除等操作实现 //顺序查找int Search_Seq(SSTable ST,int key){int i;//注意:表长度从1开始,...
2021-07-14 22:57:21
257
1
原创 查找基本基本概念
目录基本概念常见操作查找算法评价指标小结:下一篇:基本概念常见操作若只进行1则为静态查找表若还要进行2则为动态查找表查找算法评价指标小结:...
2021-07-14 22:10:02
82
原创 图的关键路径
目录一、AOE网定义二、性质三、计算与分析四、求关键路径步骤下一篇:一、AOE网定义二、性质AOE网仅有一个入度为0的顶点(开始顶点(源点))表示工程的开始仅有一个出度为0的顶点(结束顶点(汇点)),表示工程的结束从源点到汇点可走的路径有很多条,具有最大路径长度的路径为关键路径,上面的活动为关键活动,该路径的长度为项目完成的最短时间,若这几个活动不能按时完成,则工程完成时间就会延长三、计算与分析1、事件vk的最早发生时间ve(k...
2021-07-13 21:30:47
313
原创 有向无环图DAG
目录一、描述表达式二、拓扑排序三、逆拓扑排序小结:下一篇:定义:若一个有向图不存在环,则称为有向无环图(Directed Acyclic Graph)一、描述表达式对于这个表达式使用二叉树表示显然红色和绿色部分冗余了我们可以将这两个冗余部分合并,以减少存储空间就形成了一个DAG图其中还有可以合并的部分全部合并后在考研题目中这种题目很容易漏掉某个可合并项比较好的方法:练习:第一步...
2021-07-13 21:23:07
725
2
原创 最短路径算法
目录一、BFS求无权图的单源点最短路径二、迪杰斯特拉,带权图的最短路径三、弗洛伊德(Floyd)算法小结:下一篇:单源最短路径和每对顶点间的最短路径一、BFS求无权图的单源点最短路径原理:从源点开始BFS遍历,按BFS的规则,将每个被遍历到的顶点(且没被访问过)的距离设为上一个顶点的距离值+1代码(伪)://求u到其他顶点的最短路径,G为无权图 void BFS_MIN_Distance(Graph G,int u){//数组d代表从u到i...
2021-07-11 00:08:33
661
1
原创 最小生成树
目录一、最小生成树定义:二、普里姆算法(Prim)三、Kruskal算法(克鲁斯卡尔)小结:下一篇:问题:一、最小生成树定义:对于一个带权连通无向图G=(V,E),生成树不同,每棵树的权(树中所有边上的权值和)也不同,设R为G的所有生成树的集合,若T为R中权值和最小的生成树,则T称为G的最小生成树(Minimum-Spanning-Tree,MST)注:1、最小生成树可能有多个,但边的权值之和总是唯一且最小的2、最小生成树的边数=定点数-1,砍掉一条则不...
2021-07-10 19:49:49
19500
原创 图的基本操作与遍历
目录一、操作概览:二、操作详解三、广度优先算法(1)和树的广度优先遍历是很相似的(2)要点:(3)代码(4)非连通图处理(5)效率分析:(6)广度优先生成树(7)广度优先生成森林小结:四、图的深度优先遍历(1)代码:(2)对非连通图的处理(3)空间复杂度(4)深度优先生成树和森林(5)图的遍历与图的连通性小结:下一篇:一、操作概览:这里只探讨邻接矩阵与邻接表怎么实现这些操作二、操作详解1、判断图是否有边<..
2021-07-03 22:02:10
469
原创 图的存储十字链表和邻接多重表
目录一、十字链表存储二、邻接多重表存储无向图小结:下一篇:一、十字链表存储注:A->B ,其中B是弧头,A是弧尾例子:即:顶点结点中绿色色块代表由某条弧指向另一个顶点橙色色块代表被某个顶点指向弧结点中下面的色块,绿色代表都是同一个弧尾也即是同一个顶点指向其他顶点,橙色部分代表都指向同一个顶点重点还是看弧结点中上面的色块很明显的表示了由哪个顶点指向哪个顶点,找某个顶点的出度就是从绿色色块出发,入度就是从橙色色块出发只能存储有向图...
2021-06-29 19:39:02
125
1
原创 图的存储邻接表
目录一、原理以及实现二、空间复杂度:三、入度出度小结:下一篇:一、原理以及实现由于邻接矩阵O(n^2)的空间复杂度不适合存储稀疏图邻接表采用顺序+链式存储结构体代码//边的结构typedef struct ArcNode{int adjvex;//指向哪一个结点struct ArcNode *next;//下一条弧的指针 //可以带上权值信息 }ArcNode;//邻接表结点结构 typedef struct VNode{in...
2021-06-29 18:30:34
113
原创 图的存储邻接矩阵
目录一、邻接矩阵二、邻接矩阵的性质小结:下一篇一、邻接矩阵注意:(A行,B列)表示有从到到B的邻接边如图:对于无向图,矩阵中的每一个1代表两个顶点邻接(存在一条边)0代表不邻接,一条边代表两个1(因为无向)对于有向图,与无向图不同,一个弧代只表一个1结构://邻接矩阵存储图//顶点最大数 #define MaxVertexNum 100typedef struct {char Vex[MaxVertexNum];//顶点表i...
2021-06-28 19:39:16
398
1
原创 图的基本概念
目录一、图的定义二、图结构的应用三、无向图有向图四、简单图和多重图五、顶点的特点六、子图(图的局部)七、连通分量八、生成树九、边的权、带权图/网小结:下一篇:一、图的定义图G由顶点集V和边集E组成,记为G=(V,E)V(G)表示G中图中顶点的有限非空及,E(G)表示图G的顶点之间的关系(边)集。若V={v1,v2,v3,…,vn},则|V|表示G中顶点的个数,也称G的阶E={ (u,v) | u∈V,v∈V },用|E|表示G中边的...
2021-06-26 21:57:50
154
1
原创 哈夫曼树与编码
目录一、带权路径长度二、哈夫曼树的定义三、哈夫曼树的构造算法特点四、哈夫曼树应用:哈夫曼编码小结:下一篇:一、带权路径长度1、结点的权:实现某种含义的数值2、结点的带权路径长度:从树的根到该结点的路径长度与该结点上权值的乘积例如:3、树的带权路径长度:树中所有叶结点的带权路径长度之和二、哈夫曼树的定义在含有n个带权叶结点的二叉树中,其中带权路径WPL最小的二叉树为哈夫曼树,也称最优二叉树。三、哈夫曼树的构造...
2021-06-25 12:17:58
156
1
原创 平衡二叉树
目录定义:四种情况(1)LL平衡旋转(右单旋转)(2)RR平衡旋转(3)LR旋转:(4)RL旋转查找效率分析小结定义:平衡二叉树(Balanced Binary Tree),简AVL树,树上任一结点的左子树和右子树的高度之差不超过1平衡因子=左子树高-右子树高,所以平衡二叉树的平衡因子只可能是-1、0或1,只要平衡因子的绝对值大于1就不是平衡二叉树在二叉排序树中插入新结点后,如何保持平衡?调整最小不平衡子树:从插入结点往回找到第一个...
2021-06-23 14:37:11
445
原创 二叉排序树
目录一、定义二、查找三、插入四、二叉排序树的删除小结:下一篇:一、定义二叉排序树或二叉查找树(BST,Binary Search Tree)性质:左子树上所有的结点的关键字均小于根结点的关键字右子树上所有的结点的关键字均大于根结点的关键字左子树和右子树又各是一棵二叉排序树由于这些特性通过中序遍历可以得到一个递增的有序序列可以很方便的实现有序组织、搜索二、查找代码实现BSTNode *BST_Search(BSTree T,in...
2021-06-23 10:17:52
287
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人