- 博客(89)
- 收藏
- 关注
原创 如何理解transformer中的残差连接
残差连接(Residual Connection)是Transformer中的一个关键设计,用于解决深层网络训练时的梯度消失问题,同时帮助模型保留原始输入信息。它的操作非常简单,但效果显著。以下是通俗易懂的解释:一句话总结:把当前层的输入直接加到当前层的输出上,形成“输入 + 输出”的短路路径。数学公式:输出=输入 x + 当前层的变换(x)\text{输出} = \text{输入} \ x \ + \ \text{当前层的变换}(x)输出=输入 x + 当前层的变换(x)(其中“当前层的变换”可
2025-04-21 15:43:20
544
原创 如何通俗的理解注意力机制中的KQV
假设你想写一篇关于“气候变化”的论文,需要从图书馆找相关书籍。我们可以用一个**“图书馆找书”**的比喻来理解注意力机制中的。“猫追老鼠,因为它饿了。
2025-04-21 14:05:10
413
原创 如何通俗的理解transformer架构编码器和解码器干的活
解码器的任务是根据编码器的“报告”,逐步生成目标内容(比如英文句子“The weather is nice today”)。这种分工让Transformer既能生成流畅的句子,又能忠实反映输入内容,成为翻译、对话、文本生成的强大工具。想象你要翻译一句话,比如把中文“今天天气很好”翻译成英文。这就像作家写小说时,必须按顺序写,每写一个词只能看前面写好的内容,避免“剧透”后面的情节。,他们的目标是把输入内容(比如一句话)彻底吃透,整理出一份“深度分析报告”。这就像作家写论文时,边写边查参考文献,确保内容准确。
2025-04-18 17:50:28
598
原创 注意力机制是如何实现的
而多头注意力进一步增强了模型的表达能力。这种机制不仅是Transformer的基础,也被广泛应用于计算机视觉、语音处理等领域。,决定不同位置信息的重要性,再对信息进行加权融合。为了增强模型捕捉不同模式信息的能力,通常会将注意力机制扩展为。注意力机制的实现可以分解为几个核心步骤,其本质是通过。“猫追老鼠,因为它饿了”i )(维度为 ( d。
2025-04-17 14:10:34
986
原创 可不可以说transformer架构就是注意力机制,注意力机制就是transformer架构
二者的关系更类似于**“汽车”和“发动机”**——注意力机制是 Transformer 的核心组件之一,但 Transformer 还包含其他关键设计。掌握这一区别,有助于更深入理解现代AI模型的运作原理。Transformer 是一个由多模块组成的系统,
2025-04-17 13:57:31
560
原创 注意力机制除了自注意力,还有哪些
注意力机制的灵活性,让它成为AI模型的“瑞士军刀”——通过组合不同变体,可以应对从短文本到长视频、从结构化数据到非结构化数据的各种挑战。,还有许多变体和扩展形式,适用于不同的场景。注意力机制是一个灵活的工具箱,除了最著名的。
2025-04-17 13:53:26
1014
原创 注意力机制相比于RNN的核心优势是什么
注意力机制的核心优势 = 打破序列依赖枷锁 + 拥抱并行计算自由 + 动态聚焦关键信息——它让模型像人类一样,能瞬间抓住重点,而非被顺序处理的“流水线”限制思维。
2025-04-17 13:52:11
457
原创 如何通俗理解注意力机制
注意力机制 = 让计算机学会“抓重点”的超能力——它通过动态计算“谁和谁更相关”,像人一样灵活分配精力,这是Transformer、GPT等模型强大的关键原因。
2025-04-17 13:51:38
306
原创 如何通俗理解transformer架构
输入句子→ 一篇文章编码器→ 快速标注重点的编辑团队自注意力→ 用荧光笔标出关联词解码器→ 根据重点写摘要的作家位置编码→ 给每段文字加上页码。
2025-04-17 13:50:51
310
原创 linux常用指令汇总
Linux 系统中有大量强大且高效的命令,可以极大提升工作效率。掌握这些命令后,Linux 系统的日常操作、调试和管理效率会大幅提升!)深入学习每个工具的详细用法。
2025-04-09 14:42:16
248
原创 如何理解ADRC中的TD模块
在PID调参过程中,若系统在稳态时出现震荡现象,说明当前参数组合导致系统响应过度或阻尼不足。通过上述方法逐步调整,通常能有效消除稳态震荡。若问题持续,可尝试更高级的控制算法(如自适应PID或模糊PID)。
2025-04-08 14:15:50
392
原创 PID调参时,发现在稳态时有震荡现象,应该怎么再调节PID的三个参数
在PID调参过程中,若系统在稳态时出现震荡现象,说明当前参数组合导致系统响应过度或阻尼不足。通过上述方法逐步调整,通常能有效消除稳态震荡。若问题持续,可尝试更高级的控制算法(如自适应PID或模糊PID)。
2025-04-02 15:36:48
1698
原创 智能驾驶员模型IDM详解
智能驾驶员模型(Intelligent Driver Model, IDM)是一种微观跟驰模型,用于模拟车辆在道路上的纵向运动行为,强调安全性与效率的平衡。IDM通过动态平衡速度追求与安全跟驰,成为交通建模和自动驾驶领域的核心工具。参数调整可灵活适配不同驾驶风格,是理解微观交通行为的重要模型。(无前车干扰时的理想加速)和。
2025-04-01 11:40:22
641
原创 基于车辆运动学模型和滑模控制的横向控制算法设计
航向误差:(eψe_{\psi}eψψref\psi_{ref}ψrefψ\psiψ横向位置误差:(eye_yeyyrefy_{ref}yrefyyy误差动态方程:(e˙y\dot{e}_ye˙yv⋅sineψv⋅sineψ。
2025-03-19 18:21:23
820
原创 既然多线程纯读取同一块数据是安全的,那么为什么还要用std::shared_lock加锁
场景是否需要锁原因纯读取(无写)可选,但建议加共享锁防御性编程、内存可见性、未来扩展性读写混合必须加锁(共享锁/独占锁)避免数据竞争和未定义行为即使多个线程仅进行读取操作,使用仍是推荐做法。内存可见性(读取最新数据)。代码的扩展性和健壮性。与潜在的写入操作安全协作。
2025-03-19 13:45:42
760
原创 std::unique_lock和std::shared_lock有什么区别
和是 C++ 标准库中用于管理锁的两个工具,它们的主要区别在于锁的类型和用途。用于独占锁(如std::mutex),而用于共享锁(如。
2025-03-19 13:31:48
1040
原创 如何理解std::promise和std::future
的作用:作为生产者线程的结果出口。的作用:作为消费者线程的结果入口。适用场景:需要明确分离“结果生产者”和“结果消费者”的多线程任务。方法适用场景优点缺点共享数据 + 互斥锁简单数据,少量访问灵活通用需手动管理锁,易死锁条件变量需要等待特定条件高效,避免忙等待代码复杂度较高原子操作基本数据类型,无锁需求无锁,高效仅支持基本类型消息队列大量数据或流式处理扩展性强实现复杂回调函数一次性数据传递简单直接无法动态更新数据全局变量快速原型开发(不推荐生产环境)
2025-03-18 18:07:14
742
原创 理解torch函数bmm
torch.bmm是 PyTorch 中的一个函数,用于执行批量矩阵乘法(Batch Matrix Multiplication)。它适用于处理一批矩阵的乘法操作,特别适合于深度学习任务中的场景,比如卷积神经网络中的某些层。
2024-12-18 14:42:26
738
原创 理解torch函数squeeze和unsqueeze
是指在PyTorch中用于压缩张量维度的函数。它主要用于移除维数为1的维度,使得输出的张量形状更简洁。squeeze综上所述,是一个非常实用的工具,帮助开发者在处理数据时能够灵活地调整张量的维度,从而更好地适配各种算法的需求。
2024-12-18 14:23:31
690
原创 cmake如何查看具体编译命令
后会在build文件夹里生成一个compile_commands.json文件,这里面列出了每个文件对应的编译命令。可在CMakeLists.txt里设置。Release和Debug不区分大小写。两个tyep的编译间选项的区别。
2024-10-24 17:19:47
415
原创 C++ noexcept关键字详解
noexcept是c++11新引入的关键字,取代c++98的throw()的异常规格,虽然c++的异常规格被大家嫌弃并弃用,但将一定不会发出异常的函数申明成noexcept还是能一定程度上带来代码效率的提升。
2024-03-22 17:06:35
902
原创 C++ inline关键字总结
inline只是对编译器的建议,编译器不一定采纳inline会省去函数调用的开销,同时还可以帮助编译器优化代码inline会造成代码膨胀,消耗内存template和inline是两个概念,彼此互不影响,在template函数加inline的话,就是具现出来的每个函数都是inline的在类的成员函数声明里直接定义函数的话,会隐式inlineinline会使virtual函数落空,因为virtual意味着执行后决定调用,而inline表示执行前替换构造函数和析构函数不要inline,因为这两个函数
2024-03-05 16:37:30
341
原创 c++ [[nodiscard]]关键字详解
如果一个函数声明了[[nodiscard]],则该函数的返回值不能没有承接,如果没有承接,就会编译报warning
2024-03-01 10:21:24
1065
原创 git describe
git describe一般用于查看当前提交距离上次最近的tag是什么,并且还可以知道差了多少个commit,在工程实践当中是个非常好用的命令
2024-02-27 16:28:51
724
原创 自动驾驶中的障碍物时间对齐法
自动驾驶算法使用的系统往往不是实时系统,因此每个节点间拿到的数据可能不是同一时间的数据,从而造成系统误差,针对这一现象,工程上往往采用时间对齐内插外推法
2024-02-23 16:51:56
994
原创 编译报错 terminate called after throwing an instance of ‘std::length_error‘ what(): vector::_m_range_ins
terminate called after throwing an instance of 'std::length_error' what(): vector::_m_range_insert
2024-02-22 15:19:33
895
原创 c++指针和引用的区别
个人认为一个函数中,如果涉及传入参数的修改,那么最好把这个被修改值设计成指针接口,因为这样在下游调用函数时,就知道哪个参数会被修改,代码可读性更好。涉及型别推导时,例如模板推导或auto推导的情况,指针会被推导出指针型别,并保留cv特性。但引用只会被推导成值型别,且不保留cv特性。操作符,在返回类型时应该使用引用,而不使用指针。指针可以被重新赋值指向另一个不同对象,但是引用总是指向在初始化时被指定的对象,以后不能改变。指针指向了一个对象的地址,引用是给一个对象起别名。一些惯用语境下,例如重载。
2024-02-18 17:42:07
402
原创 python scatter_max算子不适配报错,RuntimeError: Not compiled with CUDA support
运行python做神经网络训练时,scatter_max算子不适配报错:RuntimeError: Not compiled with CUDA support。
2023-07-03 09:54:15
1024
1
原创 如何在linux上查看显卡型号
发现我的显卡型号是2504,这和我们印象中的显卡型号如1080Ti之类的不一样,看起来不像真正的型号。可以看出显卡真正型号是"GeForce RTX 3060 Lite Hash Rate"这个网页里搜索2504,才能找到对应的真实型号。我的显卡的搜索结果如下。
2023-06-27 13:35:21
3604
原创 torch_scatter的scatter函数是什么意思
把src的第1行放在新tensor的第2行,最后,第一行用0补充空缺,最终输出tensor有三行。以上整个操作的意思是,把src中的第0行和第2行做平均后,放在新tensor的第0行,以上整个操作的意思是,把src中的第0行和第2行取最大后,放在新tensor的第1行,把src的第1行放在新tensor的第0行,最终输出tensor只有两行。
2023-06-21 19:19:35
378
原创 安装argoverse踩坑记录
ERROR: Could not build wheels for numpy, which is required to install pyproject.toml-based projectsnote: This error originates from a subprocess, and is likely not a problem with pip.ERROR: Failed building wheel for numpyerror: subprocess-exited-with-er
2023-06-19 14:43:27
2108
1
原创 如何评价CPU的性能
线程数越多,性能越好,四核八线程的CPU的性能不一定比六核六线程的CPU性能差。类比发动机涡轮增压值,带不带涡轮增压会很大程度影响性能,例如2.0T的发动机的马力不一定比3.0自然吸气的马力差。物理核心数,常见的CPU核心数有四核,八核,十六核等,CPU核心数越多,性能越好。类比发动机的缸数,常见发动机缸数有四缸,六缸,八缸,往往发动机缸数越多,此发动机马力越大。主频即CPU的时钟频率,这个值越大说明CPU处理数据能力越快,性能越好。类比发动机的红线转速,往往红线转速能拉的越高,此发动机马力越大。
2023-05-24 18:35:46
515
原创 conda和pip
conda和pip都是包管理工具,拥有xxx remove之类的语法的工具基本上都可以称作包管理工具。conda和pip的区别在于conda可以管理任何语言的包,而pip只能管理Python的包conda一般集成在anaconda里,anaconda可以提供一个独立的Python环境,该环境可以指定想要的Python版本,可以用有独立的依赖包,这个环境其实就是一个独立的文件夹。pip在安装依赖复杂的包时,在安装过程中如果遇阻,可能会污染环境。
2023-05-10 18:34:32
702
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人