- 博客(73)
- 收藏
- 关注
原创 sparedrive的规控部分
主要的收获是:如果周围的智能体是从图像中聚合出来的,那么对于主车的感知几乎是没有的。他们使用了前置摄像头的最小特征图来初始化自我实例特征。除了感知的信息,还使用主车的矢量化信息,通过解码来监督主车的位置、速度、转向角等信息。每一帧使用上一帧的预测速度作为自我锚点速度的初始化。得到这些智能体的信息之后,使用三种交互形式,智能体之间的交互、智能体与地图的交互、智能体与历史帧的交互(场景级的交互)。参考:https://zhuanlan.zhihu.com/p/704342927。
2025-02-26 16:42:51
181
原创 关于optimizer、loss、backward、scaler、scheduler
parameter的grad如果在一次backward后不进行清除,那么会在第二次backward的时候进行累加,那么这个grad就是不正确的,所以在每次backward前需要进行optimizer.zero_grad(),这样就将所有的parameters进行grad清零。loss是一个tensor,将loss.backward(),可以对loss的grad_fn中的参数进行求导,这样就可以得到parameter的grad。一般对fp32没有什么影响。
2025-02-19 14:50:36
168
原创 transformer详解
transformer的mask主要有两种,一种使padding_mask, 一种使future_mask. padding_mask是将实际不存在的内容mask掉,future_mask是让时序推理的时候让在预测T+1的token时只会用到T及T以前的信息。相对距离: on和chair,on和floor, sit 和on, sleeping和on的相对距离都是1,它们之间的相对距离相同,且和绝对位置以及句子长度无关。要想全面的表达位置信息,transformer需要满足以下4个条件。
2024-09-26 20:51:33
392
原创 深度学习中的正则化和归一化
正则化是制定一些规则,防止模型过拟合,通常是在loss中体现,如L1正则化(loss + λ |weight|,有助于产生稀疏解,不重要的参数会变成0,因为绝对值的倒数是不变的),L2正则化(loss + λ * weight**2,有助于使模型参数趋于平滑,即参数值不会太大也不会太小,因为次方倒数随着随着数值变大而变大,数值变小而变小);归一化是一种将数据按比例缩放,使之落入一个小的特定区间的过程。归一化的主要目的是消除不同量纲及单位影响,提高数据间的可比性,同时也有助于加快算法的收敛速度。
2024-09-26 20:31:41
440
1
原创 理解optimizer.zero_grad(), loss.backward(), optimizer.step()的作用及原理
函数会遍历模型的所有参数,通过p.grad.detach_()方法截断反向传播的梯度流,再通过p.grad.zero_()函数将每个参数的梯度值设为0,即上一次的梯度记录被清空。因为训练的过程通常使用mini-batch方法,所以如果不将梯度清零的话,梯度会与上一个batch的数据相关,因此该函数要写在反向传播和梯度下降之前。
2024-08-22 20:08:45
181
原创 【pytorch】固定(freeze)住部分网络
https://blog.youkuaiyun.com/jningwei/article/details/120300014
2024-08-22 20:07:19
284
原创 model.train()和model.eval()的区别
训练模式(Training Mode):如表格所示,在此模式下,模型会进行前向传播、反向传播以及参数更新。某些层,如Dropout层和BatchNorm层,在此模式下的行为会与评估模式下不同。评估模式(Evaluation Mode):如表格所示,在此模式下,模型只会进行前向传播,不会进行反向传播和参数更新。Dropout层会停止dropout,BatchNorm层会使用在训练阶段计算得到的全局统计数据,而不是测试集中的批统计数据。
2024-08-22 20:05:08
343
原创 model.eval()和torch.no_grad()的区别
在评估模式下,模型的所有层都将正常运行,但不会进行反向传播(backpropagation)和参数更新。此外,某些层的行为也会发生改变,如Dropout层将停止dropout,BatchNorm层将使用训练时得到的全局统计数据而不是评估数据集中的批统计数据。torch.no_grad()是PyTorch的一个上下文管理器,用于在不需要计算梯度的场景下禁用梯度计算。在使用torch.no_grad()上下文管理器的情况下,所有涉及张量操作的函数都将不会计算梯度,从而节省内存和计算资源。
2024-08-22 20:03:27
294
原创 model只load一部分参数
当权重中的key和网络中匹配就加载,不匹配就跳过,如果strict是True,那必须完全匹配,不然就报错,默认是True。只加载部分参数权重,可以将state中不需要的参数删除,然后加载其他项。
2024-08-22 20:01:53
191
原创 模型参数获取
一个dict,name + parameters(grad=true),这些参数都是可学习的参数。一个list,只有parameters。所有的参数,不管grad是否为true。所有模块的迭代器,模型结构。
2024-05-31 18:03:59
183
原创 Laplace分布
相比高斯分布,高斯分布是L2分布,可以用来表示多维的相关性分布。在做NLL的时候,laplace收敛的更加匀速。laplace分布是一个L1的分布,只能用来描述一维的分布,不能用来表示多维的相关性分布。参考链接:https://zhuanlan.zhihu.com/p/156234503。
2024-04-19 11:14:36
208
原创 DP、DDP、FSDP
FSDP使属于DDP的一种,主要是在于要把DDP中的all-reduce操作拆解为reduce-scatter和all-gather 操作(在参数处理的时候)参考链接:https://blog.youkuaiyun.com/qinduohao333/article/details/131650137。参考链接:https://www.cnblogs.com/qizhou/p/16770143.html。直接用sys.exit()就行。如何退出DDP多卡?
2024-04-19 11:07:09
320
原创 PCA 主成分分析
PCA的主要思想是将n维特征映射到k维上,这k维是全新的正交特征也被称为主成分,是在原有n维特征的基础上重新构造出来的k维特征。PCA的工作就是从原始的空间中顺序地找一组相互正交的坐标轴,新的坐标轴的选择与数据本身是密切相关的。其中,第一个新坐标轴选择是原始数据中方差最大的方向,第二个新坐标轴选取是与第一个坐标轴正交的平面中使得方差最大的,第三个轴是与第1,2个轴正交的平面中方差最大的。通过这种方式获得的新的坐标轴,我们发现,大部分方差都包含在前面k个坐标轴中,后面的坐标轴所含的方差几乎为0。
2024-04-11 20:31:09
290
原创 C++线程管理
std::unique_lock:支持std::lock_guard的功能,但是区别在于它提供更多的成员函数,比如:lock(),unlock()使用更加灵活,并且可以和condiction_variable一起使用控制线程同步。主要作用是防止wait线程空执行,只有等notify_one这个线程更新了之后,wait才会动,才会去尝试解锁;std::lock_guard: 构造函数执行了mutex::lock(),在作用域结束时,自动调用析构函数,执行mutex::unlock()
2024-03-12 17:38:01
401
原创 PointMixer论文阅读笔记
但是MLP-mixer在点云识别方面表现欠佳,PointMixer就是在保留了MLP-mixer优点的同时,还可以很好的处理点云问题。MLP-Mixer将CNN的两个任务切割开来,不同位置的mix叫token-mixing,同一位置不同channel的mix叫做channel-mixing。token-mix MLP具有转置同变性的缺点,而且token-mix只能使用固定数量的输入,但是对于点云来说,neighbor不是固定的,要用聚类算法。这里的乘法的element-wise。
2024-02-15 15:21:25
1309
1
原创 误差椭圆和协方差矩阵的关系
特征向量 = [[sin(), cos()], [cos(), -sin()]]协方差矩阵的特征值为误差椭圆的a和b, 特征向量为误差椭圆的方向。
2024-02-06 18:14:11
648
原创 派生类和基类的构造函数的关系
我们通常说的派生类和基类,我们调用派生类的自定义的构造函数的时候,派生类会自动调用基类中的default construct函数,而不能调用基类中的其他构造函数(除非在派生类的构造函数序列初始化的时候指明基类的构造函数,否则将会自动调用基类默认构造函数)
2024-01-21 12:16:16
449
原创 Focal loss
α / (1 - α) = 负样本数 / 正样本数, 平衡样本不均匀。平衡分类难易,如果P越大说明分类容易,乘以(1-p)变小。分类问题经典loss。
2023-12-28 15:12:38
364
原创 emplace_back() push_back()
假设 vector 中元素类型是类类型,那么 emplace_back() 待添加的元素的类型是类中有参构造的参数类型时,emplace_back() 比 push_back() 少一次移动或拷贝构造函数。而如果添加的元素是类类型的对象时,则和 push_back() 一样都只会调用一次移动构造函数或一次拷贝构造函数。原文链接:https://blog.youkuaiyun.com/unonoi/article/details/114680819。如果在类里面没有构造传类的构造函数,那么是浅拷贝,反之为深拷贝。
2023-11-01 17:40:55
76
原创 MARC: Multipolicy and Risk-aware Contingency Planning for Autonomous Driving论文阅读笔记
为了降低计算量,可以使用规则剪枝,但是剪枝的缺点是,很难设计出完美的规则去适应所有的场景。先用规则建立起sceanario,然后使用剪枝方法删除不必要的障碍物,然后使用闭环前仿(forward-simulation)建立轨迹。具体的,先衍生出各个场景,各个场景之间不同的地方(分叉的地方)使用分叉点,减少相同部分的计算量。最后使用cost计算,来选择最合适的场景和轨迹。这里的做法是planning的时候依旧保有了多模态,在planning阶段依旧考虑多模态,让planning的结果是对所有场景的最优结果。
2023-10-04 16:40:28
995
2
原创 M2I论文解读
整体来讲M2I是一种模型架构,主要提出了交互预测的概念。先是去区分influence和reactor(通过谁先通过碰撞点来计算,先到达碰撞点的是influencer,后到达碰撞点的是reactor),然后会influencer和reactor进行正常的单轨迹预测,然后用交互预测使用预测好的影响者的轨迹去预测响应者的轨迹。这个论文的缺陷是只提出了两个障碍物之间的交互,难以将这种交互扩展到多个障碍物。
2023-10-04 11:13:38
115
原创 MoE(Mixture-of-Experts)
具体做法是把一个预训练好的模型(比如BERT)的FFN层分解成多个experts,这样在计算的时候速度可以大幅提高(相当于只激活原始FFN网络的一部分)。token-level:前面那个文章,是 sample-level 的,即不同的样本,使用不同的experts,但是这篇则是 token-level 的,一个句子中不同的token使用不同的experts。MoE主要的作用是作为一个相对好的模型,去增加另一个模型的训练参数量,来提升另一个模型的能力。在模型的某个部分增加MoE,增大模型的参数量。
2023-08-06 18:28:49
266
原创 常见的曲线拟合
Idlt().solve()的理解,可以参考博客https://www.zhihu.com/column/c_1584844668977840128?所有的控制点一起控制整条曲线,动一个点,整条曲线都会变动,算力比较大。分段控制曲线,但是曲线不会经过控制点,可能会有小S弯。分段控制曲线,曲线经过控制点,可能会有小S弯。
2023-07-12 16:59:30
263
原创 CoreDump
gdb 运行的bin文件 xxx/corefile。mkdir xxxx // 创建一个文件夹。使用core_pattern工具。
2023-06-25 15:17:22
83
原创 git常用命令
git push -f origin xxx //打了patch之后,继续推送原来的commit。git pull = git pull origin xxx //获取最新版本并merge。git pull --rebase //不会自动merge, 会显示冲突选择忽略或修复。git reset --hard origin/xxx // 取消当前的commit。git fetch origin //远程获取最新版本到本地,不会自动merge。git push origin xxx //推送到一个分支。
2023-05-23 16:09:07
65
原创 DenseTNT论文笔记
同时会对F进行loss计算,这里会有goal的真值。为了解决预测没有多个真值的问题,会使用offline的优化算法来优化,具体的,前边获得heatmap的方法和online是一样的,将goal set prediction这一块换成optimization algorithm。由于预测的目标只有一个,去做多目标真值有一定的困难,这篇文章还提出了一种离线的优化算法,能够得到一些pseudo-label。这个地方置信度的真值标签v也很有意思,是在训练的时候现标注的,真值是预测出的轨迹里真值最近的那个head。
2023-05-21 20:43:13
903
1
原创 Virtual
虚基类https://blog.youkuaiyun.com/xbb123456rt/article/details/81986691?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522167629987316800215069826%2522%252C%2522scm%2522%253A%252220140713.130102334…C++中基类的析构函数为什么要用virtual虚析构函数。
2023-05-14 10:15:42
61
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人