自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 做一个图像分类任务(二)预测单张图像-英文

图像分类任务

2024-04-20 16:49:17 375

原创 做一个图像分类任务(一)准备数据集

对于深度学习的数据集,为了避免数据的分布而影响到模型的训练,数据集应当要尽可能包含目标物体的各类场景,并且各种场景下的图像的数量尽可能相近,这样训练出来的模型才具有很好的泛化性能。以及它的子文件下有其他非法的文件,会导致训练出错,所以可以检查下 dataset 下有没有其他非法文件已经其子文件内有无非法文件。这里的代码与github上可能有一丢丢不同,大家想看全面点还是要看github上原版的代码以及原作者的视频讲解,博主这里只是博主按需学习的一些经验哦!不同图像域(照片、漫画、剪贴画、油画)

2024-04-18 16:34:03 860

原创 深度学习可视化模型

如下图所示:下图上面是关于一个分类网络的一个训练过程,即输入一个原始图像,经过全卷积神经网络的训练,得到最后一个卷积层的卷积结果,这里为一个512通道14*14的卷积结果,经过全局平均池化GAP,对每一个通道求一个平均数(即得到512个平均数),这些平均数作为线性分类的权重进行加权求和,得到每一个类别的logit,经过softmax得到一个后验置信度,从而得到该特征中属于每一个类别的概率。使用二阶和三阶偏导数得到每一个位置的权重,每一个位置的权重不同,则不同位置对最后的权重w的影响也就不同。

2024-04-12 14:26:10 825

原创 理解感受野

定义:在卷积神经网络中,每个神经元结点都对应着输入图像的某个区域,仅该区域的图像内容能对相应的神经元的激活产生影响,那么这个区域就叫做该神经元的感受野。越靠近感受野的中心区域越重要;各向同性:也就是感受野附近的重要程度成中心对称结构;由中心向周围的重要性衰减速度可以通过网络结构控制。

2024-03-11 20:04:22 378

原创 pytorch(十)循环神经网络

之所以叫做循环神经网络,是因为以上的cell都是同一个cell,参数也只有cell里的一份而已,在训练中,cell层使用的是循环结构,使用不同的输入数据进行训练。这里是需要训练一个模型,使得输入“hello”,而输出为“ohlol”,实际上对于输入的数据,判别输出的数据属于哪一个类别,这里只有4种字母,所以输出的维度为4。循环神经网络处理的数据往往是序列数据,即输入的数据是一个序列,每一个时间步都有一个对应的输出,RNN通过循环层保留和传递历史信息,从而建立时间上的依赖关系。第一种方法 RNNCell。

2024-03-11 10:26:47 1033

原创 pytorch(九)卷积神经网络

全连接神经网络是一种最为基础的前馈神经网络,他的每一个神经元都与前一层的所有神经元进行连接,这种连接方式可以使得全连接神经网络能够学习到更加全局的特征。随着神经网络的层数的增加,可能会出现梯度消失问题,而残差网络使用支线将输入直接连接到后面的层,使得后面的层可以直接学习残差。全连接神经网络需要更新的参数数量多,并且在全连接层的输入中,如果是对图像进行处理,比如。,输入的是(通道1,高28,宽28像素)的图像,但是在全连接层中会被拉成(卷积神经网络CNN更适合用在图像识别、语音识别等各种场合。

2024-03-09 20:28:07 1053

原创 pytorch(六、七)多维特征数据的输入、加载数据集的类

ps:这里为什么给出两种代码,其实这里按照我给出的公式其实第二种代码才是对应的代码,第二种的max_iter其实可以认为是epoch,表示周期,因为一个周期需要所有的样本数据都参与一次。在批量梯度下降中,参数更新的次数与周期在数目上是一致的,这是因为批量梯度下降每一次参数更新需要所有的样本参与。批量梯度下降对于凸优化问题可以找到全局的最优解,这种方法在样本量不大的情况下可以快速收敛,但是如果样本的量过大,每次参数更新都需要全部的样本的参与,单次更新的时间长,需要的存储空间也大。下面推导梯度下降的公式。

2024-03-05 16:14:27 995

原创 pytorch(四、五、八)用pytorch实现线性回归和逻辑斯蒂回归(分类)以及多分类问题

但是在Linear层中,当输入特征被Linear层接收是,它会接收后转置,然后乘以权重矩阵,得到的是输出特征的转置,换句话说可以在底层使用Linear,它实际上做的是。如果一个类实现了回调方法,那么只要对象实例被调用,这个特殊的方法也会被调用。中,第一个代码中,我们没有通过pytorch实现线性模型的时候,我们会显式调用forward函数,计算前馈的值,我们是这样写的。很明显,上面的图标表示一个 3×4 的矩阵乘以 4×1 的矩阵,得到一个 3×1 的输出矩阵,使用普通矩阵的乘法实现如下。

2024-03-04 16:53:52 1034

原创 pytorch(三)反向传播

tansor的广播机制就是在不同的rensor之间进行计算时,自动将数据进行扩展的一种方式。简单来说,就是当两个tensor的形状不同时,tensor会自动的将自己的形状扩展为另一个tensor的相同形状,然后进行计算。在神经网路中,经常对线性的结果做一个非线性函数的变幻的展开,这就是激活函数。在tensor的使用过程中,我们经常需要对不同形状的tensor进行计算,这个时候就需要用到tensor的广播机制。满足以上规则的tensor可以进行广播,维度扩展的过程就是将数值进行复制的过程。

2024-01-23 11:10:17 554 2

原创 pytorch(二)梯度下降算法

在深度学习中,尽管梯度下降算法会陷入局部最优,但是在深度学习中梯度下降算法依旧广泛应用:在之前大家认为,深度学习的目标函数会出现很多的局部最优解,但是实际上,其损失函数并没有很多的局部最优解。梯度下降算法属于贪心算法的一种,它的权重的更新,每一次都是朝着梯度下降最快的方向进行更新,当梯度为0的时候,算法收敛,权重不再更新。在上面的梯度下降中,求损失的时候用的是全部数据的平均损失作为更新的依据。和第二课不同的是,第一课的w是我们认为设定的,通过一个for循环使得w迭代,这一次需要的是通过模型找到适合的w。

2024-01-20 19:59:47 946

原创 python绘制三维图

散点图的绘制主要用到 ax.scatter(xs,ys,zs,s=20,c=None,depthshade=True,*args,*kwargs)subplot 可以规划figure划分为n个子图,但是每条subplot命令只会创建一个子图。用于新增子区域,该区域可以坐落在figure内的任意位置,而且可以设置大小。add_subplots的参数与subplots相似。subplots的参数与subplot的相似。

2024-01-18 15:57:41 1118

原创 pytorch学习(一)线性模型

线性模型的参数是w和b,它的学习是通过不断减少损失实现的,其损失一般为均方损失。

2024-01-16 19:42:13 397

原创 python如何读取excel表格数据

openpyxl不能凭空产生一个表格文件,但是xlwt可以,所以openpyxl需要传入一个excel文件。python中对xls格式文件相关的包有三个:xlrd、xlwt和xlutils。可以通过一下方法,对xls数据进行读取、写入和追加写入。excel有xls和xlsx两种格式,他们的区别在于。

2024-01-15 20:36:32 1303

原创 linux 讨论题合集(个人复习)

在linux中,一切皆文件,目录也是一个文件,也有属于自己的innode,与普通文件不同,普通文件的数据块中存放的是文件数据,而目录文件的数据块中存储的是别的文件的信息,一条这样的信息就是一个FCB,也就是一个文件目录项,FCB的有序集合称为文件目录。mmap: mmap是一种将文件内存映射到进程的虚拟地址空间的技术,在这种机制下,文件可以被视为内存的一部分,可以实现程序直接对这部分的内存进行读写操作,实现像访问内存一样对文件进行读写,这种方法提高了处理的效率,简化了文件的操作。

2023-11-29 21:43:32 399

原创 linux socket套接字

否则,查看缓冲区剩余空间是否容纳得下要发送的len长度,若不够,则拷贝一部分,并返回拷贝长度(指的是非阻塞send,若为阻塞send,则一定等待所有数据拷贝至缓冲区才返回,因此阻塞send返回值必定与len相等);成功时,返回拷贝的字节数,失败返回-1。当本地与不同目的地址通信时,只需指定目的地址,可使用同一个UDP套接口描述符sockfd,而TCP要预先建立连接,每个连接都会产生不同的套接口描述符,体现在:客户端要使用不同的fd进行connect,服务端每次accept产生不同的fd。

2023-11-29 21:41:29 216

原创 Linux 线程

当函数返回时,被等待线程的资源被收回。retval: 用户定义的指针,用来存储被等待线程的返回值。现象:在执行过程中,上述数据是一次性打印的,不是一个个蹦出来的,这是因为linux是有缓冲的,频繁的输入输出会耗费资源,降低性能,所以linux会等待一批数据,然后一次性输出一批数据。第一个参数是线程的类型,第二个参数是线程的属性,第三个是函数指针(线程的入口函数),第四个是给函数指针的参数。进程的资源对进程中的线程是共享的,当线程对进程中的资源进行修改时,如果不对线程的执行的顺序加以控制,会导致数据的混乱。

2023-11-09 17:31:41 189

原创 Linux 进程的管道通信

进程之间的通信:Linux环境下,进程地址空间相互独立,每个进程各自有不同的用户地址空间。任何一个进程的全局变量在另外一个进程中都看不到,所以进程之间不能相互访问,要交换数据必须通过内核。如图,在内核中开辟一块缓冲区,进程1把数据从用户空间拷贝到内核缓冲区,进程2在从内核缓冲区中把数据读走,内核提供的这种机制称为进程间通信IPC(InterProcess Communication)当父进程使用pipe创建管道之后,一般需要再fork一个子进程,然后通过管道实现父子进程之间的通信。管道实现程序之间的通信。

2023-11-07 14:29:19 144

原创 C 怎么用c语言的函数指针实现封装、继承和多态

封装是把一个抽象的事物的属性以及对应的操作打包到一个类中,通过内部的方法来改变内部的状态,封装的本质是在隐藏信息,使得对象内部的状态不轻易被外界访问和利用。具有不同的功能的函数可以使用同一个函数名,从而实现一个函数名调用不同的功能函数。继承是基于一个已有的类(父类),再创建一个新的类(子类),新的类可以访问父类的属性和动作,从而避免重复编写代码。子类可以有自己的属性。定义一个human的结构体,结构体具有两个属性为age和sex,有两组方法,分别为设置输入与获取的方法。

2023-11-06 17:38:25 273 1

原创 nginx 进程模型

是因为 Nginx 要保证高可用性,多线程之间会共享地址空间,当某一个第三方模块引发了一个段错误时,就会导致整个 Nginx 进程挂掉。在Nginx的main函数最后,一切准备就绪后,根据ngx_process 值的指示,判定单/多进程模式。多进程模式下Worker进程的作用(os/unix/ ngx_process_cycle.c)进行绑定时,必须cpu数目与worker进程数目相等,否则不好绑定。(3)便于worker进程与master进程间通信;进程模式分为单进程模式和多进程模式。

2023-10-29 22:30:49 172

原创 nginx 内存管理(二)

正常来说,通过malloc函数申请的内存都是进程私有的内存但是Linux会提供共享内存的系统调用,如mmap和munmap等//指向申请的共享内存块首地址//共享内存块大小//共享内存块名字//共享内存块日志//标志是否已经存在//共享结构//以下共享接口//创建共享内存块//释放共享内存块//创建if (shm->addr == MAP_FAILED) { //错误处理//成功,返回。

2023-10-29 19:15:31 151

原创 深度学习与计算机视觉(一)

对角线上的表示第k个类别的精度,混淆矩阵可以清晰的看到哪一个类别的分类情况较好(精度高),哪一个类别的分类情况不好(精度第),以及具体的分类情况是什么。因为f是单调递增的函数,,如果 w>0,则,说明前一个神经元对后一个神经元有激活的作用;损失函数通过比较模型对样本X的预测结果与样本的真实类别y之间的差异,计算损失,差异越大,损失越大,差异越小,损失越小。softmax的决策规则就是:寻找概率最大的作为分类的输出,又因为e函数是单调递增的,所以只要z最大,则概率就会最大。变成正数,正数加和为分母,求概率。

2023-10-26 21:37:04 667

原创 c语言 char* 和char[]的返回值

以上代码是可以正确运行的,因为name1为静态局部变量,虽然fun函数结束后其作用域消失,但是其name1存储在静态存储区,并没有随着作用域一起消亡,所以返回的是一个有效的地址。:静态局部变量的作用域与局部变量的作用域是一样的,都是当定义这个局部变量的那个函数或者语句块结束时候作用域结束。静态全局变量在声明他的文件之外的其他文件是不可见的,仅从定义变量的开始位置到文件结尾可见。使用:在局部变量前加static关键字,修饰局部变量为静态局部变量。类型赋值,如果非要赋值,可以使用。:静态全局变量的存储位置在。

2023-10-23 14:29:34 324

原创 nginx 内存管理(一)

对于栈内存,函数编译的时候,编译器会移动栈到当前指针位置的代码,实现栈空间的管理。但是对于堆内存,通常需要程序员进行管理,我们常说的内存管理其实就是对堆空间的管理。nginx的内存管理可以分为两个部分,一种是常规的内存池,也就是进程平时所需要的内存管理;这里主要讲的是内存池管理内存。内存池的结构如下:一般来说,内存池的第一个结点会包含以下的数据结构,而从第二个结点开始,max——log部分会被缺省,当做空间进行分配。nginx使用内存池来管理内存,当进程需要内存时,向内存池申请,使用后释放内存池。

2023-10-20 15:08:14 390

原创 Linux 进程操作

操作系统通过识别每一个进程的pid来识别每一个进程,pid在进程中是唯一的,可以重复利用(比如说前一个为pid=11的进程死掉了,那么pid=11的这个进程就可以分配给其他进程使用了:当pid达到最大限制时,内核会从头开始查找闲置的pid并使用最先找到的那一个作为新进程的id)以上的程序结果显示的是子进程先执行,而后父进程开始执行,但是实际上,在执行了fork之后,父进程与子进程都是同时存在的,也就是。一个程序的执行称为一个进程,所有的代码都是在进程中执行的,进程是操作系统资源分配的基本单位。

2023-10-19 15:43:54 335

原创 操作系统 内存对齐

pragma pack (n):让变量强制按照 n 的倍数进行对齐,并会影响到结构体结尾地址的补齐(详见四的通常情况下关于结尾地址补齐的描述)。对于数组成员:比如 char a[5],它的对齐方式和连续写 5 个 char 类型变量是一样的,也就是说它还是按一个字节对齐。首先需要明确,cpu是按照块来访问内存的,根据不同的平台,块的大小不同,通常是按照2的次方倍字节进行数据读取。对于标准数据类型(内建数据类型),内存地址是该种数据类型的整数倍,如int类型,地址要是4字节的整数倍;

2023-10-14 17:35:47 227

原创 Linux gcc和make学习

用户自己定义的变量叫做用户自定义变量,makefile的变量是没有类型的,直接创建变量的名字然后给其赋值即可# 正确的定义自定义变量 变量名=变量值在给makefile的变量赋值之后,可以使用$(变量的名字)来将变量的值取出来# 用户自定义变量# 定义一个变量# 规则1app:$(obj)CC:默认值为 cc ,是gcc的意思,一般用来编译c程序CXX:默认值为 g++,一般用来编译c++程序CFLAGS:c语言编译器的编译选项,没有默认值,要用户自己赋值# 预定义变量# 定义变量。

2023-10-13 14:50:05 703

原创 Linux C文件操作

使用fgetc或者fputc的时候,它底层的调用还是调用了read和write,但是在读取的时候做了一个系统的优化,也就是一次性读取了多个字节的内容,表面上看起来只读取一个字符,实际上底层中读取的是多个字节的字符。文件的属性信息与文件的实体不是存在在一个位置上的,把文件的属性信息存放在一个位置,这一类的文件叫做目录文件,也就是windows上的文件夹。表示从指定的文件中读下一个字符,返回一个没有符号的字符,或者EOF(end of file),需要读的文件必须是读或者读写的方式打开的,并且文件存在。

2023-10-12 21:49:20 447

原创 linux shell程序设计

讨论:程序的位置参数和函数的位置参数是不同的,①程序的参数指的是整一个程序(命令的)参数,比如在命令行中输入ls -la ,该命令中的 -la 就是该命令的第一个参数,用 $1 表示;讨论:正则表达式可以用来匹配符合某一种规则的字符,以case语句中,需要匹配no的各种大小写的可能性,可以使用正则匹配 [Nn][Oo] | [Nn] ,这样可以使得条件表达式更加简洁。注意,程序的位置参数与函数内的位置参数不是一个概念,出现在函数调用中的。表示的是程序的位置参数,与在命令行中的第一个参数是一样的;

2023-10-07 11:39:46 141

原创 nginx下载与安装教程

nginx是一款业内流行、功能强大的web服务器。高性能:对正常请求,比Apache有更快的响应;高可靠:主-工作多进程模型;高并发:万级别以上,甚至十万级别+易扩展:模块化设计热部署:修改配置文件后,优雅重启;跨平台:Linux、Windows、macOS。

2023-10-04 15:12:45 188

原创 Linux vi编辑器的使用

②使用vi filename 可以进入vi ,这个时候vi处于命令模式,在命令模式下,可以使用i 进入到编辑模式,表示从当前光标位置开始插入;讨论:①在命令模式下,vi使用/+搜索词对文件进行匹配,匹配成功后,可以使用小写n对匹配项从上而下移动,或者使用大写N对匹配项从下而上移动;②在命令模式下,可以使用s命令对光标所在位置的字符进行编辑,编辑后退出编辑模式,使用n在匹配项中移动,再使用 . 来重复上一条编辑指令;可以对光标所在位置的字符编辑成所需替换的字符,使用n或者N在搜索结果中移动光标,再使用。

2023-09-30 15:49:18 294

原创 Linux 常用命令

表示将该符号前面的执行结果,作为输入的参数传递给该符号后面的命令(管道),该命令的意思是,在当前目录中寻找所有的p开头的.c文件,并给把这些文件中的include都找到。可以使用more命令实现文件的逐屏显示,more命令会显示文件的阅读的进度,在文件中敲回车可以阅读整个文件;命令对目录以及目录下的文件进行打包,打包与压缩的概念不同,打包是把所有的文件装到一起变成一个文件,压缩是把一个文件合理摆放腾出更多的空间。当运行的进程状态不对时,可以使用ps查看进程的运行情况,使用kill来杀死进程(终止进程)

2023-09-27 11:10:45 816

原创 深度强化学习(三)马尔科夫决策过程

Horizon:同一个游戏环节或者轨迹的长度,由有限个步数决定的。Return回报:从时间t到horizon的时间长度内,把奖励进行折扣所获得的收益。这里有一个叠加系数γ,越往后的奖励的的折扣越多,因为我们更希望得到现有的奖励。状态的价值:在某一个时刻t,在状态s下所期望的回报是:从这个状态开始的未来期望累积回报折扣系数γ∈[0,1]可以避免无穷的奖励未来是不确定的希望尽可能快的获得奖励。

2023-09-25 19:49:54 136

原创 深度强化学习(二)统计、概率与随机过程普及

弱大数定律说明,当n趋向于无穷时,独立同分布的随机变量的期望接近于它的平均值。伯努利大数定律描述了实验次数很大时,事件频率很大接近于事件的概率。

2023-09-25 11:04:25 101

原创 深度强化学习(一)常识性普及

强化学习(Reinforcement Learning)注重让参与者(Agent)在与环境的互动中进行目标导向型学习。参与者可以根据当前所处的环境(State)以及某一个行动策略(policy)来U型俺去一个行动(Action)来与环境进行一系列的互动。有一些互动可以立即从环境中获取奖励(Reward),并且改变环境的状态,甚至可以改变后续的奖励;但是有一些互动可能会存在延迟。并且这些奖励有正向的也有负向的。

2023-09-24 20:49:33 204

原创 Anaconda安装路径和包路径问题

这里首先说明,我本身电脑是有两种python的,一种是直接安装在电脑3.9版本的python,一种是由Anaconda管理的虚拟环境,包括base的3.8版本的python、使用conda创建的虚拟环境的python(test的是3.7,gluon的是3.6),使用不同环境的python下载的包的路径是不一样的。上,找到对应的安装目录即可找到对应的包路径。总之,一般来讲pip下载的包都会在。

2023-09-19 15:47:54 8482 2

原创 Anaconda、conda、pip的区别

conda是一个环境管理的工具,conda是用来安装conda package的,虽然大部分的conda package都是python的,但是除了python的包,conda还可以安装mkl这种写c/c++的包。Miniconde也是一个软件的发行版,它的本质是一个用来安装空的conda环境的安装器,Miniconda仅包含conda和conda的依赖,不包含其他的包,可以使用。国内使用pip的网速快,conda和pip的包有很多重合的,但是不完全重叠,有一些包只能通过其中一个才能装。

2023-09-19 14:29:29 375

原创 机器学习(一)

假设用E来评估计算机程序在某任务类T上的性能(度量),若一个程序通过利用经验P在T中的任务上获得了性能改善,则我们就说关于T和E,该程序对P进行了学习机器学习致力研究如何通过计算的手段,利用经验来改善系统自身的性能,从而在计算机上从数据中产生“模型”,用于对新的情况给出判断。

2023-09-17 22:12:16 194

原创 解决jupyter打开的默认路径问题

已经安装完anaconda,但是jupyter每一次打开的路径都不是自己想要的路径,可以在配置文件中修改jupyter打开的默认路径

2023-09-15 10:56:22 454

转载 W25QXX的使用

先把cs拉低,然后把指令90h通过引脚DIO送到芯片,然后接着把24位地址000000h送到芯片,然后芯片就会先后把“生产ID”和“器件ID”通过DO引脚在CLK的上升沿发送出去,如果把24位地址谢伟000001h,ID号的发送顺序就会颠倒,也就是先发了“器件号”再发“生产号”,ID号是8位数据。当/CS拉低后,开始把05h从DIO引脚送到芯片,在CLK的上升沿数据被芯片采集,当芯片认出采集到的数据是05h的时候,芯片就会把“状态寄存器”的值从DO引脚输出,输出在CLK的下降沿输出,高位在前。

2023-06-02 16:57:34 417

转载 SPI协议

SPI中使用MOSI和MISO来进行全双工的传输数据,SCK来同步数据传输,即MOSI和MISO同时工作,在时钟信号线SCK为有效的时候对MOSI和MISO进行采样,采到的信息为传输信息。SPI是串行外围设备接口,是一种高速的、全双工的、同步的通信总线,可以同时发出和接收串行数据,可以作为主机或者丛机工作,提供频率可编程时钟,发送结束中断标志,写冲突保护,总线竞争保护等。SPI中的数据在采样是在SCK的上升或者下降沿的时候进行的,如图的数据是在SCK下降沿的时候进行采样的。

2023-05-31 15:37:42 645

高级操作系统题库(全)

高级操作系统的题库;还有自己整理的所有代码都运行正确的版本的题库;还有我删除重复的,适合熬夜复习的打印版本

2023-12-01

数据结构考研必看代码题

数据结构考研必看代码题,考研党必备

2023-04-26

云计算第三版全套PPT

云计算第三版全套PPT,仅学习

2023-04-26

概率统计全版ppt,提供学习使用

概率统计全版ppt,提供学习使用

2023-04-26

操作系统思维导图,用来记忆绝绝子

操作系统思维导图,用来记忆绝绝子,考研初复试都可以用,高清打印

2023-04-07

计算机网络思维导图,用来记忆绝绝子

计算机网络思维导图,考研初复试都可以用

2023-04-07

计算计组成原理思维导图

计算计组成原理思维导图,考研初复试都好用

2023-04-07

数据结构试题和答案,861数据结构

861数据结构,安徽

2023-03-25

数据结构历年真题,关于二叉树的

主要关于二叉树的

2023-03-21

数据结构思维导图,用来记忆绝绝子

数据结构思维导图,可以打印,高清版

2023-03-18

空空如也

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

TA关注的人

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