自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Ubuntu上安装anaconda创建虚拟环境(各种踩坑版)

踩坑包括:1.anaconda下载失败 2.anaconda安装权限 3.换conda和pip的源

2024-07-24 19:07:28 698

原创 GPU驱动、CUDA 、cuDNN 和CUDA Toolkit之间的关系(深度学习小白必懂)

GPU驱动、CUDA、cuDNN和CUDA Toolkit之间有着紧密的关系,它们共同构成了一个完整的GPU编程和深度学习开发环境。在最初配置anaconda环境时一直搞不明白它们之间的关系。所以根据自己的理解,通俗详细解释它们各自的角色和相互间的关系,并且列举了一些在anaconda虚拟环境中的例子。不对的地方希望大家指正。

2024-07-23 10:08:05 1112

原创 ViT(Vision Transformer)网络结构详解

本文在transformer的基础上对ViT进行讲解,transformer相关部分可以看我另一篇博客(

2024-07-22 16:34:27 1125

原创 YOLOv2小白精讲

所以不用调整网络结构就可以输入不同分辨率的图像而得到相同的输出维度。

2024-07-21 23:56:47 1246

原创 Python中相对导入运行报错

主要3个知识点1. Python的文件搜索路径优先级是执行文件所在的目录,项目根目录以及其他包等等2. 相对导入依赖于当前模块的层次结构,它使用.或..来指定相对于当前模块的路径。但是,当直接运行一个脚本时,Python解释器不会将这个脚本视为任何包的一部分,因此它没有“父”包,这会导致相对导入失败。3. 间接调用模块输出的__name__是包含路径信息的

2024-07-15 09:52:15 481

原创 yolov1基础精讲

目标检测是理解图像内容的基础,它涉及识别图像中的一个或多个对象,并确定它们的位置。YOLOv1将目标检测视为一个单一的回归问题。它将整个图像分割成一个个,每个网格负责预测中心点落在该网格内的目标对象。YOLOv1的架构基于卷积神经网络(CNN),它通过一个单一的网络流程来预测多个边界框和类别概率。网络的输入是一张图片,输出是多个边界框的坐标、置信度以及类别概率。(yolov1的损失函数很重要)

2024-07-09 09:25:40 786

原创 使用c++栈刷题时踩坑的小白错误

作为条件,但每次循环都会弹出栈顶元素,这会导致在下一次迭代之前栈的大小发生变化。一个简单的题目炸出来这么多基础错误,人都懵了,都是泪啊,还得练。将被调用,尝试访问一个不存在的元素,从而导致访问违规。不能通过索引直接修改。

2024-06-26 14:35:40 307

原创 常见激活函数(Sigmoid、Tanh、Relu、Leaky Relu、Softmax)

不同的激活函数有不同的输出范围,比如Sigmoid函数的输出在(0, 1)之间,Tanh函数的输出在(-1, 1)之间,ReLU函数的输出在[0, ∞)之间。在神经网络的基本结构中,每个神经元接收输入信号,对其进行加权求和后加上偏置项,然后将这个结果通过激活函数进行转换,得到神经元的输出。由于大多数实际问题都是非线性的,非线性激活函数使得神经网络能够拟合复杂的函数映射关系,从而解决非线性问题。:某些激活函数(如ReLU)具有计算效率高的优点,因为它们的计算只涉及到基本的算术操作,而不需要昂贵的指数运算。

2024-06-20 17:35:37 2854

原创 transformer中对于QKV的个人理解

上面这个transformer中的注意力公式,相信大家不会陌生。公式并不复杂,但是why?为什么是这个公式,为什么大家都说之前了解transformer的时候,对于QKV的设定感到很奇怪,后来慢慢接受了这个设定,今天记录一下自己的理解。

2024-06-09 17:34:21 1375

原创 批量归一化(BN)和层归一化(LN)的区别

以批量归一化举例但是批量归一化同时也降低了模型的拟合能力,归一化之后的输入分布被强制拉到均值为0和标准差为1的正态分布上来,简单来说特征之间的距离不会跑的很远,大部分特征都在正态分布的那个峰值附近。以Sigmoid激活函数为例,批量归一化之后数据整体处于函数的非饱和区域,只包含线性变换(多层的线性函数跟一层线性网络是等价的,网络的表达能力下降),破坏了之前学习到的特征分布。因此,为了使得归一化不对网络的表达能力造成负面印象,可以通过一个附加的缩放和平移变换改变取值区间。

2024-06-03 20:42:51 644

原创 图像在神经网络中的预处理与后处理的原理和作用(最详细版本)

预处理,后处理,图像深度学习,张量,互为逆过程

2024-04-25 22:42:17 2757 2

原创 手把手在K210上部署自己在线训练的YOLO模型

讲解了在线训练模型、模型部署以及各部分的代码

2024-03-30 22:39:29 3270 26

原创 K210颜色识别实践

K210是一款嵌入式人工智能芯片,具有强大的图像处理能力。在这个示例中,我们将利用K210的图像处理功能进行颜色识别,以检测摄像头捕获的图像中的红色、绿色和蓝色区域,并在LCD屏幕上标记出这些区域。

2024-03-29 11:35:09 2038 2

原创 C++类模板详解

类模板是一种用来生成类定义的模板,其中可以包含一个或多个类型参数。这些类型参数可以在定义类的时候替换为任意类型,从而使得我们能够创建适用于多种数据类型的通用类定义。类模板的定义使用 template或来声明一个类型参数。

2024-03-27 22:09:22 1318

原创 .cpp与.h文件的关系详解(预处理、编译、链接)

先介绍.h和.cpp的作用,然后解释两者预处理、编译和链接的过程

2024-03-26 14:11:47 4308

原创 C++函数模板详解(结合代码)

在这种情况下,编译器会生成一个针对 T 为 int 类型的具体函数实现。template<typename T>表示声明一个模板,typename T是模板参数,如果T的数据类型传入的是像Person这样的自定义数据类型,也无法正常运行。类型的参数时,编译器会优先选择这个具体化版本,而不是通用的模板版本。T —— 通用的数据类型,名称可以替换,通常为大写字母T。在C++中,模板是一种通用的程序设计工具,它允许我们。类型时,我们想要做一些特殊的比较,比如比较。类型对象的比较逻辑,即比较它们的名字和年龄。

2024-03-25 16:30:25 1699 1

原创 C++的虚函数、纯虚函数和抽象类

c++的虚函数,纯虚函数以及抽象类的理解与使用

2024-03-24 14:46:19 1380 1

原创 详解SPI通信协议(衔接IIC)

先介绍IIC不足,引入SPI,然后详细讲解其硬件和时序。

2024-03-23 14:16:20 1040 1

原创 USART通信协议详解

UART(Universal Asynchronous Receiver/Transmitter,通用异步收发器)是一种广泛应用于串行通信的硬件接口,它允许计算机和微控制器与其他设备进行数据交换。特点:异步通信:UART协议的数据传输是异步的,这意味着发送和接收数据不需要共享时钟信号。每个字符之间的时间间隔可以是任意的,只要接收方能够正确地识别出字符的起始位和停止位。数据帧结构:UART数据传输的基本单位是字符。每个字符通常包含起始位、数据位、可选的校验位和停止位。

2024-03-22 14:34:29 1189 1

原创 IIC通讯协议详解(电路和时序图)

硬件电路设计软件时序设计1. 起始条件与终止条件2. 发送与接收一个字节3. 发送应答和接收应答4. IIC时序4.1 指定地址写4.2 当前地址读4.3 指定地址读

2024-03-15 10:01:26 4573 4

原创 c++浅拷贝与深拷贝,从内存分析原理

深拷贝与浅拷贝的内存讲解

2024-03-14 10:40:41 497 1

原创 详解c++多态中的析构与构造函数

先介绍多态,讲解原理,之后详解构造和析构函数

2024-03-13 20:57:35 1177

原创 c++“引用”相关知识点

sizeof 引用”得到的是所指向的变量(对象)的大小,而“sizeof 指针”得到的是指针本身(所指向的变量或对象的地址)的大小。因为test02()返回的是a的引用,因此test02() = 1000即ref=1000(a=1000)。常量引用是指对常量的引用,它使用 const 修饰符来确保被引用的对象在引用期间不被修改。a的内存空间将被释放,因此返回的是一个对已经不存在的变量的引用,这会导致。会将a的值拷贝一份作为返回值,然后销毁a本身,返回的是一个值的副本。在C++中,引用是一个别名,

2024-03-12 22:44:53 509 1

原创 定时器中断流程讲解,结合代码

因为定时器还有很多模块都需要申请中断,比如不仅计数器重新置零会触发中断,触发信号也会申请中断,输入捕获和输出比较也会申请中断,所有这些中断都需要经过输出中断控制。定时器中断的流程,关于定时器和中断的知识点不过多赘述,相关知识点可以查看我的另外两篇文章,讲的很详细,希望能有所帮助。在3到4这个过程中间,中断信号会在状态寄存器里置一个中断标志位,这个标志位会通过中断输出控制到NVIC申请中断。选择内部时钟,连接到使用的TIM2通用定时器。的定时器中断流程,标了执行逻辑的顺序。完整代码如下,值得注意的是。

2024-03-03 12:02:46 1346

原创 STM32定时器和时钟树详细图文讲解,小白必会!

本文对b站的教学视频内容进行总结和理解,用作学习记录和助力大家理解。

2024-03-02 15:50:10 1685

原创 STM32外部中断讲解

关于STM32中断的详细流程讲解,有助于大家理解。

2024-02-29 21:43:48 984

原创 C++静态成员变量为什么要类外初始化

关于C++静态成员变量的知识点以及为什么必须在类外进行初始化

2024-02-27 14:52:35 1245

原创 指针常量与常量指针的理解与记忆,不用死记硬背

总结指针数据类型的意义、指正常量和常量指针

2024-02-20 22:37:42 478

原创 C语言数组指针解析

C语言中nt (*p)[3] = &a不会报错而int (*p)[3] = a报错的详细解释,保证讲透,也是小白第一次发博客,记录一下知识点

2024-01-10 22:11:29 404 1

空空如也

空空如也

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

TA关注的人

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