- 博客(10)
- 收藏
- 关注
原创 李沐 + 李宏毅-- transformer原理和代码分析【笔记自用】
特征增强:对每个位置的向量进行深度非线性变换容量扩展:增加模型参数,提高表达能力分工明确:与自注意力机制形成互补(关系 vs 特征)维度保持:输入输出形状一致,支持残差连接通用逼近:两层网络可以逼近任何连续函数简单来说:PositionWiseFFN就像是给每个词向量单独配备的一个"微型大脑",让每个词都能被深度理解和加工!这就是为什么它在Transformer中如此重要,没有它,模型的表现力会大大降低。1. 注意力机制相关参数key_size(键维度):每个注意力头中key向量的维度。
2025-11-29 18:44:56
645
原创 李沐 -- 注意力评分函数代码分析
的形状是,这个形状的设计有深刻的数学和语义含义。每个查询应该关注所有键值对中的哪些部分python# 伪代码表示for i in range(batch_size): # 遍历每个样本for j in range(num_queries): # 遍历每个查询for k in range(num_kv_pairs): # 遍历每个键weight = 计算注意力(查询[j], 键[k])
2025-11-21 15:26:31
801
2
原创 李沐 -- RNN从零实现代码分析
不是词汇表长度,而是隐藏层的大小(维度),这是一个超参数,需要我们自己设定。vocab_size= 输入/输出维度(由数据决定)= 隐藏层维度(自定义超参数)两者是独立的,可以大于、等于或小于vocab_size控制着RNN的记忆容量,更大的值意味着模型可以记住更复杂的时间模式。def __call__(self, X, state): # X.shape (批量大小,时间步数)是的,state在训练过程中确实会更新前向传播时更新返回新的state通过时间传递。
2025-11-19 13:43:25
981
原创 李沐 -- 转置卷积原理 [自用笔记]
形状换算假设输入高(宽)为 n核的大小为 k填充为 p步幅为 s转置卷积的输出大小为 n’ = s * n + k - 2p - s (这里的 p 指的是上填充或者下填充,而没有将上下填充加起来)如果考虑同样超参数的卷积,则卷积的输出大小为 n’ = ⌊(n - k - 2p + s) / s⌋ (“⌊⌋” 表示向下取整,所以在 “⌊⌋” 中的式子不被整除的情况下,n 如果增加一点是不会影响输出的,所以卷积中的 n 如果增加的话,可能会导致最终的输出 n’ 不会有所变化)
2025-11-16 17:44:54
832
原创 李沐 -- NMS代码分析
从𝐿中选取置信度最高的预测边界框𝐵1作为基准,然后将所有与𝐵1的IoU超过预定阈值𝜖的非基准预测边界框从𝐿中移除。这时,𝐿保留了置信度最高的预测边界框,去除了与其太过相似的其他预测边界框。keep 是 NMS函数返回一个一维张量,包含被保留的对应类别的索引 因此当all_idx 与 keep 合并是,保存的索引个数会 > 1 , 因此就可以将对应背景类的索引提出来了。从𝐿中选取置信度第二高的预测边界框𝐵2作为又一个基准,然后将所有与𝐵2的IoU大于𝜖的非基准预测边界框从𝐿中移除。
2025-11-15 15:39:42
623
原创 李沐 - 锚框 代码解读
值重复不是问题,而是特性✅期望行为:一个真实框匹配多个anchor✅训练友好:增加正样本,稳定训练✅性能提升:多尺度检测,提高召回率✅无冲突:损失计算正确处理重复匹配这种设计正是目标检测中常用的"一对多"匹配策略,是保证检测性能的关键机制。
2025-11-11 23:41:08
533
原创 Kaggle 房价预测(笔记自用)
# 使用GPUdevice为什么cpu可以而cudanumpy()只能在 CPU 张量上调用GPU 张量需要显式移动到 CPU才能转换为 NumPy 数组你的原始代码缺少.cpu()步骤这就是深度学习开发中常见的"设备边界"问题:计算可以在 GPU 上进行以获得加速,但与其他库(如 NumPy、pandas)交互时,数据必须回到 CPU。DataLoader 不是必须的,但强烈推荐使用内存效率:支持批处理和流式处理训练质量:支持数据打乱,提高泛化能力性能优化:支持并行数据加载代码可维护性。
2025-11-06 22:49:28
741
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅