自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 二维码生成器

【代码】二维码生成器。

2024-05-27 07:46:43 398

原创 Gan 对抗生成网络

结构就出来了,首先要有一个网络来进行图片生成,还要有一个网络对正确图片进行训练判别,还有一个对假的模拟生成图片进行判别。nn.ConvTranspose2d这个玩意是反卷积层(转置卷积/上采样卷积),把输入的小的特征图转化为大的特征图,说白了就是根据特征图生成含有这些特征的模拟图片,剩下的代码就很简单不做解释。这是训练判别器的代码,这一部分是训练了两个数据,一个是真实的图片一个是高斯分布模拟出来的图片。生成器顾名思义就是生成图片,判别器就是判别这个图片是真的还是假的。两个重要的东西,生成器,判别器。

2024-05-23 21:17:04 188

原创 rnn,lstm 拙见

hidden = self.tanh(self.i2h(combined))这个是得到新的hidden值,可以看出来这个hidden值是指的经过激活函数之后的值。这个进一步解决了rnn的问题,注意到这个rnn是存在一个问题就是他每一步都存放了前一个值得一些信息,这样子做,会导致记忆很多不重要的信息,重要的信息占比会少,导致整个效果不好。lstm就是改善了这个问题,对前一个值中的一些信息做一些筛选,保留有用的信息,去除掉一些没有用得信息,他定义了三个门来解决这个问题,输入门,输出门,遗忘门。

2024-05-23 17:10:56 966 1

原创 ResNet实现

out_channels * block.expansion 这个if条件第一个stride==1为什么stride一定要等于1,确保这个经过一个残差块进入下一个残差块的时候不改变这个输入特征图的大小,这个大小改变会改变这个特征图会丢失一些信息为了不丢失信息。BasicBlock是一个pytorch自带的实现残差块得一个类具体源码之后再说, [2, 2, 2, 2]这个意思是有4个残差层,每一层有2个残差块。self.in_channels = 64,这个代表的是输入残差快的输入通道大小。

2024-05-22 22:38:04 541

原创 transformer

现在来说这个该咋做,拿这个机器翻译来举例子吧,首先定义三个参数,k,q,v,v代表这个原句子信息,q是查询的单词,啥意思呢,就是我们要得到句子里面什么是重要的什么是不重要的,这里就是要得到一个重要程度,重要程度怎么做呢,这要说到k是什么,k一般和v是相同的当然也可以是不同的但是这俩一定要是相关联的,计算时候第一步是k和q的内积,啥意思呢,就是看我搜索的这个词和句子里面这个东西的相似度说白了就是关联程度,这里一开始看我也挺困惑但是如果了解lstm和rnn这俩网络结构的话就能明白这是什么意思,说一下吧。

2024-05-19 15:44:03 935

原创 卷积核,图像分类

输出通道,输入通道,长度,宽度),怎么算参数呢,首先这个长度和宽度就是卷积核得大小,一个卷积核要对输入得所有特征图进行一次卷积之后生成得所有矩阵之后进行相加得到一个最终得矩阵,所以这个参数很显然就是每一个卷积核得参数成所有卷积核数目,就是每一个咋算呢,比如卷积核大小是5*5,输入通道是32那么就是5*5*32对吧很好理解吧,因为输入有32张特征图所以要对32张图片都要进行卷积。这就是卷积层输出得过程,这个参数矩阵会在这个网络设置的时候就被初始化。covn2d二维卷积核,专门做图像特征提取。

2024-05-17 20:54:26 301

原创 face++人脸识别工具

【代码】face++人脸识别工具。

2024-05-08 19:53:45 127

原创 Redis主从复制

redis使用要求三大特性,高并发,高性能,高可用,其中高并发和高性能因为redis本身对于数据的操作除了持久化都是在内存进行操作的,所以性能都可以保证,问题在于高可用,采取的是主从复制机制,机多个主机对应多个从机,主机负责数据的删除 新增修改,从机负责数据查找,这样可以减小主机的压力,实现负载均衡。redis 的持久化策略又两个一个是rdb文件的形式,一个是aof的形式,这两种rdb文件是一个内存快照,缺点是会出现数据丢失,因为快照是在特定结点进行生成的。

2024-04-30 16:06:04 263 2

原创 Security登录源码分析

secruity通过加载很多过滤器来拦截请求,进行身份校验,其中进行密码和用户校验的过滤器是UsernamePasswordAuthenticationFilter,类从请求中获取username和password然后疯转成一个。authenticate方法(UsernamePasswordAuthenticationToken这个是。

2024-03-23 12:27:40 353

原创 Spring-Converter转化

1. **自定义类型转换器**:首先,你需要自定义一个类型转换器,通常实现 `Converter` 接口或者 `GenericConverter` 接口,这个转换器负责将一个类型转换为另一个类型。4. **生成缓存键**:在注册转换器时,Spring 会根据转换器的源类型和目标类型生成一个唯一的缓存键(`ConverterCacheKey`),并将这个转换器与缓存键关联起来。6. **执行转换**:如果找到了匹配的转换器,Spring 就会调用该转换器来执行实际的类型转换操作。基本上是这样的流程。

2024-03-17 21:15:14 516 1

原创 赫夫曼编码压缩解压

【代码】赫夫曼编码压缩解压。

2024-02-25 23:41:57 351 1

原创 java设计模式

三 里氏替换原则:针对类,类之间的继承子类应该不覆盖父类的方法,在父类出现的地方,子类也可以替换,类之间使用继承应实现全部相似继承而不是子类和父类部分相似就实现继承,接口实现功能,通过接口增加类的功能。四 接口隔离:不应该强加给类不属于本类的方法,这里的接口广义上指的可以是,接口聚合或者单个接口,应该根据业务具体需求适当的增大接口存在方法的粒度。二 开闭原则:对扩展开放,对修改关闭,建造可扩展性强。一 单一原则:一个类或模块负责一个具体的业务。

2023-12-18 23:03:27 55 1

原创 java md5

【代码】java md5。

2023-09-22 15:50:25 57

原创 java md5加密解密

【代码】java md5加密解密。

2023-09-22 15:38:15 411

原创 TCP十一种状态变迁

右侧是发送左侧是接收。

2023-08-14 16:05:24 74

原创 Java多态-重载-重写

当java程序被编译成字节码文件时java的方法之间的调用和方法调用都是用符号来代表的,符号存放在常量池中,当字节码文件被JVM加载符号才会被方法所在的具体的空间地址替换。但是由于方法的重载,重写,导致符号对应的方法可能是一个虚方法,只有在具体运行中才能知道具体是什么方法(动态分派),因此在JVM加载时要得到符号所对应的版本是哪个(就是得到具体对应的是哪个对象)还有一部分方法是常量池中符号确定对应的方法(通过常量池符号静态声明的方法,静态分派)(虚方法表就存方法表中)最后打印的结果是三个 人类的狂欢!

2023-07-05 10:51:15 107 1

原创 TCP头部详解

如果d等于1,则说明当前序列号是上一个序列号的下一个序列号,包的发送顺序正确;如果d大于1,则说明当前序列号比上一个序列号大了多个序列号,包的发送顺序错误。在序列号回环到开头的情况下,如果d等于MAX_SEQ-1,则说明当前序列号是上一个序列号的前一个序列号,包的发送顺序正确;如果d小于MAX_SEQ-1,则说明当前序列号比上一个序列号小了多个序列号,包的发送顺序错误。通过差分算法,可以有效地判断包的发送顺序,避免序列号回环带来的问题。开始建立连接中的三次握手:发送的SIN就是SEQ的初始值。

2023-06-24 15:45:48 169 1

原创 赫夫曼树思路,代码(C语言)

同时设置新的结点为当前结点的父节点,parent结点为当前结点的父节点的parent结点,循环直到该树的根节点结束。此时得到的数组为数组结点中结点的赫夫曼编码。3 遍历结点数组找到权值最小的两个结点,称为最小结点和次结点,将两节点权值相加构造一个新的结点作为parent结点。1 前提需要一个char类型的数组来对每个结点的编码值进行存储,char类型的数组设计,数组长度设置为n,最大索引值使用temp变量存储为n-1,假设char数组为hc,设置hc[n] = '\0',初始化数组所有值为0。

2023-06-19 12:35:33 71

原创 平衡二叉树-代码详解

平衡二叉树是一种特殊的搜索二叉树,普通的搜索二叉树没有限制左右子树的高度关系,当搜索二叉树时斜树时查找效率了低,为了解决这种极端问题就考虑左右子树的高度关系,平衡二叉树就是限制左右子树高度差不超过1。这种情况3是一个不平衡点,3的右子树函数中时L,L时平衡的看似没什么问题但是问大家,加入1是新节点,请问1是怎么插入在一个原来就不平衡的棵树上的。双旋转:当9作为新节点插入时,4,6,7,均为R,而10未L,这是需要10右旋转,9替代原来的10,此时9未R,这时对7进行左旋即可。

2023-06-17 15:17:05 167 1

原创 搜索二叉树

这些特性使得在搜索二叉树中进行查找,插入,删除等错做的时间复杂度为(logn),其中n是节点的个数。1 插入操作 2 查找:在树中查找一个给定的值。3 删除:删除特定节点。1 左子树上所有节点的值均小于它的根节点的值。2 右子树上所有节点的值均大于它的根节点。前序遍历结果:1,2,4,5,3,6,7。中序遍历结果:4,2,5,1,6,7,3。后序遍历结果:4,5,2,6,7,3,1。3 左右子树也分别为二叉搜索树。

2023-06-15 21:48:20 54 1

原创 二叉树,完全二叉树,满二叉树

由①、②两式把n2消去得:n= 2n0+n1-1,由于完全二叉树中度为1的结点数只有两种可能0或1,当n为奇数n0=1;度为1的节点有1个子节点,度为2的节点有2个子节点,,度为0有0个,加上根节点(1)。又因为一个度为2的结点会有2个子结点,一个度为1的结点会有1个子结点,除根结点外其他结点都有父结点。:叶子节点(就是没有子节点的节点),子树(跟节点的左子树和右子树),深度(从根节点所在的那一层从1开始数有几层深度就是几)n代表总结点,n0代表度为0的节点,1代表度为1的节点,2代表度为2的节点。

2023-06-14 18:21:19 427

原创 数据结构-队列:顺序队列和循环队列

返回false同理当front走到数组最大索引处,取余运算同样会使得front回归到索引为0的位置来读取0索引上的数据。队列的实现方式有两种这里是使用数组来实现,顺序队列实现和循环队列,循环队列解决了顺序队列浪费空间的问题,队列特点时在队列尾部进行加入,在队列头部进行删除操作,所以当删除操作进行后,数组有空出来的位置,但是数据只能在队列尾部进行插入所以这部分被队列释放的空间不可用,为了解决这个问题循环队列采用动态取模来修改队头,队尾的值来进行循环利用被队列释放的空间。

2023-06-14 13:24:53 64

原创 数据结构-栈详解附具体应用案例:表达式求值,括号匹配,函数调用。

数据结构栈

2023-06-13 18:26:01 152 1

原创 数据结构-链表

头节点就是节点只有指针的节点没有数据,头指针通过指向头节点利用->next来增加或者删除修改值。所以必须为头节点申请内存空间没有头节点就意味着头指针直接指向带有数据的节点,有头节点不需要进行头插或者修改头部时进行头指针的重定向,没有头节点相对来说写代码稍微复杂一点。顺序表节点中存放数组和数组长度,通过节点指针指向该节点对数组做修改,顺序表是静态申请内存空间的而链表是动态的,静态就代表搜索简单但是删改难,动态很明显就是增删改简单,查找需要从头节点依次进行(对于单向链表而言),双链表可以从任意节点搜索。

2023-06-13 18:14:30 149 1

原创 C语言指针

C语言指针

2023-06-12 19:06:46 48

原创 详解搜索二叉树的中序遍历(前驱后继增强树效率)

例如中序遍历顺序是ABCD当B为当前节点,B的前驱就是A,A先于B获取,pre保存A的值可以将B的前驱设置为A。同样的后继此时注意后继指的是A的后继是B,现在要做的是将A的后继设置成B当然此时要判断A是否有右孩子,右孩子不存在才可以作为线索指向A的后继B。此时该节点的线索化操作结束。搜索二叉树是对于普通二叉树空间浪费的空间的利用,树的遍历方式前序遍历,中序遍历后序遍历,层序遍历,只有进行中序遍历时,造成空间浪费的节点是有规律的因此搜索二叉树采取的是利用中序遍历来线索化二叉树达到有效利用空间的目的。

2023-04-04 21:25:49 514 1

原创 KMP算法

kmp算法思路

2023-04-02 10:57:27 96

空空如也

空空如也

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

TA关注的人

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