- 博客(50)
- 收藏
- 关注
原创 【ROS入门】8. 服务端Server的编程与实现
本文介绍了基于ROS的服务通信实现方案,通过自定义/turtle_command服务控制海龟运动。
2026-03-20 19:35:50
322
原创 【ROS入门】3. 创建工作区间与功能包
本文介绍了ROS工作空间的创建与管理方法。工作空间包含src(源码)、build(编译中间文件)、devel(开发文件)和install(安装文件)四个目录。
2026-03-12 19:45:38
351
原创 【ROS入门】2. ROS命令行工具的使用
摘要:本文介绍了ROS常用的命令行工具及其应用。通过小海龟仿真器示例,演示了如何启动ROS Master、仿真节点和键盘控制节点。详细讲解了rosnode、rostopic、rosmsg、rosservice等命令的使用方法,包括查看节点信息、发布话题数据、显示消息类型和服务调用等操作。还介绍了话题记录(rosbag record)和复现(rosbag play)功能,通过保存和回放话题数据实现实验复现。这些工具为ROS系统的调试和开发提供了便利,特别适用于机器人系统的离线测试场景。
2026-03-12 10:40:17
646
原创 【ROS入门】1. ROS核心概念
ROS通信机制包括节点(Node)作为独立进程执行任务,通过话题(Topic)实现异步通信,采用发布/订阅模式传输消息(Message)。服务(Service)提供同步通信机制,使用请求/响应模型。参数服务器(Parameter Server)作为全局共享字典存储配置参数。文件系统以功能包(Package)为基本单元,包含元功能包组织相关功能。整个系统由ROS Master协调节点间的通信和参数管理。
2026-03-11 13:33:25
309
原创 Swin-Transformer网络结构详解
Swin Transformer是一种创新的视觉Transformer模型,由微软研究院在2021年ICCV上发表并获得最佳论文奖。它通过分层设计和位移窗口(Shifted Windows)机制,有效降低了计算复杂度并实现了全局建模能力。相比传统Transformer,Swin Transformer采用类似CNN的层次化特征图构建方法,支持不同下采样率,适用于图像分类、目标检测和语义分割等视觉任务。其核心创新包括窗口多头自注意力(W-MSA)和位移窗口多头自注意力(SW-MSA)模块,以及相对位置偏置等技
2025-11-10 16:46:27
692
原创 Transformer颠覆图像识别:ViT网络结构解析
ViT是Google团队提出的将Transformer应用于图像分类的里程碑模型。其核心思想是将图像分割为16x16的图块,通过线性嵌入转换为序列输入Transformer编码器。相比CNN,ViT缺乏空间归纳偏置,在小数据集上表现较差,但在大规模数据预训练后展现出优越性能。模型结构包含Patch嵌入、Class Token、位置编码和多层Transformer编码器。ViT的重要意义在于证明了统一框架在不同模态任务上的潜力,为后续多模态研究奠定基础。尽管训练成本较高,但通过迁移学习和微调方案,ViT正逐步
2025-10-27 15:11:13
1183
原创 深入浅出理解Attention注意力,Self-Attention自注意力机制,Masked Self-Attention掩码自注意机制,Multi-head Self-Attention多头自注意机
注意力机制是一种模仿人类选择性关注重要信息的计算技术,通过为输入数据的不同部分分配不同权重来提升模型效率。主要包括三种形式:1)基础注意力机制通过查询(Query)、键(Key)和值(Value)计算加权和;2)自注意力机制让序列元素自我交互,计算Q、K、V间的关系;3)多头自注意力并行运行多个注意力头,从不同角度捕捉信息。特别地,掩码自注意力通过遮挡未来信息,确保生成模型仅依赖已知内容。这些机制使模型能动态聚焦关键信息,显著提升了序列数据处理能力,成为Transformer等现代AI模型的核心组件。
2025-09-24 12:01:19
872
原创 镜像源地址
国内主流PyPI镜像源包括清华、阿里云、中科大、华中科大、豆瓣、腾讯和华为等,提供高速下载服务。使用时可通过pip install -i [源URL] [包名]格式指定镜像源,如pip install pytest -i https://pypi.tuna.tsinghua.edu.cn/simple。也可在批量安装时使用-i参数指定源,适用于requirements.txt文件安装。各镜像源网址简明易记,方便开发者根据网络状况灵活选择。
2025-09-23 16:05:38
175
原创 C++智能指针
C++智能指针是解决内存管理问题的RAII机制实现,主要包括三种类型:unique_ptr提供独占所有权,不可拷贝只能移动;shared_ptr支持共享所有权,通过引用计数自动释放资源;weak_ptr作为shared_ptr的弱引用,可解决循环引用问题。智能指针通过构造/析构自动管理资源,重载指针运算符提供指针行为。使用时需注意避免混合使用普通指针、正确处理所有权转移及检查weak_ptr有效性。这些智能指针能显著降低内存泄漏风险,提高代码安全性。
2025-09-17 12:14:03
703
原创 Transformer模型详解
Transformer是谷歌在2017年提出的基于自注意力机制的深度学习模型,彻底改变了序列建模方式。其核心创新包括多头注意力机制、位置编码和残差连接等组件,通过并行处理全局信息显著提升了NLP任务性能。文章详细解析了Transformer的Encoder-Decoder架构、自注意力计算过程以及多头注意力机制,并探讨了其在CV领域的扩展应用(如ViT和DETR)。特别分析了位置嵌入的重要性、注意力矩阵的缩放原理,以及训练中使用的Padding Mask和Sequence Mask技术。该架构通过堆叠相同结
2025-09-15 11:30:32
1123
原创 Available platform plugins are: xcb.报错解决办法
Available platform plugins are: xcb.报错解决办法
2025-04-23 17:03:33
897
原创 C++ ——STL 常用拷贝和替换算法
corp //容器内指定范围的元素拷贝到另一个容器中replace //将容器内指定范围的旧元素修改为新元素replace_if //容器内指定范围满足条件的元素替换为新元素swap //互换两个容器的元素。
2025-03-15 16:42:31
398
原创 C++——STL 常用的排序算法
sort // 对容器内元素进行排序reandom_shuffle // 洗牌 指定范围内的元素随机调整次序merge // 容器元素合并,并存储到另一个容器中reverse // 反转指定范围的元素。
2025-03-15 16:05:19
457
原创 C++——STL 常用的查找算法
find //查找元素find_if //按条件查找元素adjacent_find //查找相邻重复元素binary_search //二分查找法count //统计元素个数count_if //按条件统计元素个数。
2025-03-15 15:12:25
507
原创 C++ ——STL中常用遍历算法
常用算法主要是由头文件<algorithm> <functional> <numeric>组成。<algorithm>是所有STL头文件中最大的一个,范围涉及到比较,交换,查找,遍历操作,复制,修改等等。<numeric>体积很小,只包括几个在序列上面进行简单数学运行算的模板函数<functional>定义了一些模板类,用以声明函数对象for_each:遍历容器transfrom:搬运容器到另一个容器中。
2025-03-15 11:10:13
341
原创 C++——STL 常用集合算法
/ 注意:两个集合必须是有序序列。//注意:两个集合必须是有序序列。//dest:目标容器开始迭代器。//dest:目标容器开始迭代器。//beg1:容器1开始迭代器。//end1:容器1结束迭代器。//beg2:容器2开始迭代器。//end2:容器2结束迭代器。//beg1:容器1开始迭代器。//end1:容器1结束迭代器。//beg2:容器2开始迭代器。//end2:容器2结束迭代器。
2025-03-13 20:41:11
202
原创 Matlab中lfilter函数
scipy.signal.lfilter是 SciPy 库中用于实现线性滤波的函数,它基于对信号进行滤波。它的原理是通过递归的方式计算输入信号的滤波输出。
2025-03-06 16:31:36
411
原创 nano编译器中关闭文件并退出的方法
命令终止进程,但可能会导致未保存的更改丢失。如果误按了保存或退出组合键,按。无响应,可以关闭终端或使用。通过这些步骤,你可以顺利关闭。取消操作,继续编辑。
2025-02-25 15:25:02
4896
原创 已解决:AttributeError: ‘FreeTypeFont‘ object has no attribute ‘getsize‘ 报错
【代码】已解决:AttributeError: ‘FreeTypeFont‘ object has no attribute ‘getsize‘ 报错。
2024-08-01 16:47:23
1007
原创 分布式训练loda模型报错
然后遍历原始state_dict中的每个键值对。在每个键名前面添加"module."前缀,然后将处理过的state_dict加载到模型中。去除每个键名"module."前缀,然后将处理过的state_dict加载到模型中。这样做的目的是确保在load分布式训练中保存的模型时,将键名中的".module"前缀去除掉,以匹配模型的结构。这样做的目的是确保在分布式训练中加载模型时,将键名中的".module"前缀添加回来,以匹配模型的结构。以上代码首先创建一个空字典。以上代码首先创建一个空字典。
2023-12-02 11:40:46
653
原创 torch.rand()和torch.randn()的用法
2.torch.randn() 生成从标准正态分布(均值为0,标准差为1)中采样的随机数。也可以说生成的张量中的元素符合标准正态分布。内的任何值都有可能被生成,包括所有的实数值。torch.rand() 和torch.randn() 都是用来生成随机张量的函数。生成的是从标准正态分布中采样的随机数,因此它的值可以在负无穷到正无穷之间,而。内均匀分布的随机数是一种随机数生成方式,其中生成的随机数在区间。的随机数,也可以说生成的张量中的元素符合均匀分布。内的任何值都具有相同的概率分布。
2023-11-10 10:45:21
2485
原创 PyTorch中flatten() 函数的用法
此时x的维度是2×3×4=24,x = flatten(0) 和 x = flatten()的结果相同。被设置为0,表示从第一个维度(通常是批大小)开始展平。如果设置为其他整数值,则会从指定的维度开始展平。1.start_dim(可选参数):指定从哪个维度开始展平张量。被设置为-1,表示展平直到最后一个维度。如果设置为其他整数值,则会在指定的维度结束展平。此时x是从1维度开始展开,最后的x维度为(2,3×4),也就是(2,12)(1). 首先随机定义一个满足正态分布的(2,3,4)的数据x。
2023-11-07 11:55:24
1222
原创 PyTorch中veiw(),reshape() 的用法及其区别
PyTorch的reshape函数返回的是原始张量的新视图,而不是副本,因此原始张量和新形状的张量共享相同的数据。同样的理由,不能将形状为(3,3)的张量reshape为形状为(1,8)的张量,原因也是元素总数不一样。x = x.view(x.size(0), -1) 就是将网络的上一层输出的shape从第一维度开始将后面的维度展平,例如:前一层的输出shape是(1,512,1,1)经过x = x.view(x.size(0), -1)之后就变成了(1,512)此外,当需要改变张量形状时,建议优先使用。
2023-11-07 10:48:54
655
原创 单卡训练改为DistributedDataParallel训练
2.DistributedDataParallel (DDP):All-Reduce模式,本意是用来分布式训练(多机多卡),但是也可用于单机多卡。是新一代的多卡训练方法。torch.distributed 库提供分布式支持,包括 GPU 和 CPU 的分布式训练支持,该库提供了一种类似 MPI 的接口,用于跨多机器网络交换张量数据。DDP通过Ring-Reduce的数据交换方法提高了通讯效率,并通过启动多个进程的方式减轻Python GIL的限制,从而提高训练速度。但速度较慢,且存在负载不均衡的问题。
2023-11-02 17:15:35
534
原创 Python中得isinstance()函数
这时会发现,创建一个A对象,再创建一个继承A对象的B对象,使用 isinstance() 和 type() 来比较 A() 和 A 时,由于它们的类型都是一样的,所以都返回了 True。而B对象继承于A对象,在使用isinstance()函数来比较 B() 和 A 时,由于考虑了继承关系,所以返回了 True,使用 type() 函数来比较 B() 和 A 时,不会考虑 B() 继承自哪里,所以返回了 False。isinstance()函数是类似于type()函数的python内置函数,
2023-09-05 11:26:48
334
1
原创 解决报错: RuntimeError: [enforce fail at /pytorch/third_party/gloo/gloo/transport/tcp/device.cc:127] rp
分布式训练前,终端先执行:export NCCL_SOCKET_IFNAME=lo。提示我找不到 my_username地址。
2023-08-16 15:57:25
3103
1
原创 c语言,c++语言中常用的一些占位符:%d,%f,%p,%s,%c等的含义及其解释
mf:输出的数据占m列,如字符串本身长度大于m,则突破获m的限制,将浮点型对象全部输出。%ms:输出的字符串占m列,如字符串本身长度大于m,则突破获m的限制,将字符串全部输出。%-m.nf:其中m,n含义同上,m为输出的宽度,n为保留小数位数,若浮点型对象长小于m,则在m列范围内,m前为负,浮点型对象左对齐,右补空格。%-mf:如果浮点型对象的长度小于m,则在m列范围内,m前为负,浮点型对象左对齐,右补空格。%m.ns:输出占m列,但只取字符串中左端n个字符,这n个字符输出在m列的右侧,左补空格。
2023-07-27 21:02:56
14296
1
原创 Pytorch中permute(),transpose(),view()函数
比如原向量中(1, 2, 3, 4),1的下标是0,2的下标是1,3的下标是2,4的下标是3;**这个意思不是torch.transpose()只能作用于二维向量,它的意思是一次只能进行两个维度的转置,如果需要多个维度的转置,那么需要多次调用transpose()。2.维度变换函数是进行的浅拷贝操作(只复制了指像某个对象的指针,新旧对象还是共享同一块内存)即view操作会连带原来的变量一同变形,这是不合法的,所以也会报错;而tensor.view()维度变形函数的要求是需要Tensor的内存连续。
2023-07-26 11:19:43
1327
1
原创 numpy.empty的用法
不同,它不会将数组值设置为零,因此可能会稍微快一些。另一方面,它需要用户手动设置数组中的所有值,应谨慎使用。依给定的shape, 和数据类型 dtype, 返回一个一维或者多维数组,order:是否在内存中以C或fortran(行或列)顺序存储多维数据。dtype:指定输出数组的数值类型。shape:返回空数组的维度。,为随机产生的数据。
2023-07-14 10:45:53
463
1
原创 实现二维数组或多维数组排序得方法
意思根据给定参数从最后一个参数开始进行排序,如果最后一个参数给定的值相同,则根据倒数第二个参数进行排序,以此类推。例:mat= [1.+2.j 3.+4.j 5.+6.j]实部: [1. 3. 5.] 相当于:np.real。虚部: [2. 4. 6.] 相当与:np.imag。((a[:,1],a[:,0]))是一个。,先用实部,然后用虚部排序一个复杂数组。
2023-07-11 10:36:29
268
原创 qt.qpa.plugin: Could not load the Qt platform plugin “xcb“ in ““ even though it was found.(解决办法)
报错:(在以安装pyqt5的情况下)环境:ubuntu16.04。
2023-06-16 09:37:46
6401
10
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅