- 博客(131)
- 收藏
- 关注
原创 可变形卷积简介(Deformable Convolution)
可变形卷积通过动态调整卷积核的采样位置,增强模型对几何形变(如旋转、缩放)的适应能力。
2025-05-14 22:27:44
1274
原创 C++ 中 `struct` 和 `class` 的区别(小白友好版)
publicprivatepublicprivatestruct默认全公开,class默认全私有struct其实struct完全可以像class一样使用!下面是一个用structstructclass用struct的情况:• 只是简单存储几个数据(如坐标点、RGB颜色)• 需要所有成员默认可以公开访问• 写小程序图方便时用class的情况:• 需要封装复杂功能(如游戏角色、银行账户)• 需要隐藏内部实现细节• 正式项目开发中更推荐点击查看答案会报错,因为class默认成员是。
2025-05-02 16:41:34
190
原创 DeepSeek 多头潜在注意力(Multi-Head Latent Attention, MLA)技术
多头潜在注意力(MLA)是Transformer架构的扩展技术,通过。将原始高维注意力矩阵投影到低维潜在空间,降低计算复杂度(从。每个注意力头使用独立的潜在空间基向量,捕获不同语义特征。增强模型对长序列和复杂特征的建模能力。通过可学习参数自动加权各注意力头的输出。个头的潜在空间投影矩阵。
2025-04-27 23:20:49
837
原创 注意力机制全面解析:从MHA到GQA的技术演进
注:在h=64的配置下,GQA(g=8)相比MHA可减少35%内存占用,同时保持98%的模型精度。
2025-04-27 00:20:30
795
原创 【Math】奇异值分解(SVD)详解及 Python 实现
奇异值分解(Singular Value Decomposition,简称 SVD)是矩阵分解的一种方法,它将任意矩阵AAUΣVTAm×nUm×mAATΣm×nAVTn×nATA奇异值分解不仅适用于方阵,也适用于任意矩阵。它在信号处理、图像压缩、降维和推荐系统等应用中有着广泛的应用。
2024-12-01 17:59:19
1970
原创 CycleGAN算法简述
CycleGAN是一种图像到图像的翻译模型,旨在无配对训练数据的情况下完成跨域图像转换。传统方法需要成对的输入-输出数据,但这种配对数据的获取往往代价高昂且难以实现。CycleGAN通过使用无配对数据的训练策略,实现从一个图像域到另一个域的有效转换,使其在艺术风格迁移、季节变化和对象转换等任务中表现出色。
2024-11-09 21:39:07
1633
原创 矩阵迹(Trace)的性质及简单推导
迹(Trace)是一个矩阵的对角线元素之和。对于矩阵AAATraceA∑iAiiTraceAi∑AiiTraceABTraceBATraceABTraceBA即两个矩阵相乘后的迹不依赖于它们的顺序。∂∂XTraceAXAT∂X∂TraceAXAT迹函数可以通过矩阵元素的线性组合进行转换,导数为AAA的转置。
2024-10-22 11:32:16
2807
原创 【pytorch】评估计算 PyTorch 模型的 FLOPs 和参数量
在深度学习模型中,评估模型的复杂性和效率时,FLOPs(每秒浮点运算次数)和参数量是两个重要指标。FLOPs 可以衡量模型的计算量,参数量则决定模型的规模和存储需求。将以一个简单的卷积神经网络(CNN)为例,演示如何计算这些指标。
2024-10-16 12:14:18
1301
2
原创 Docker(19.03及其以上版本)配置nvidia-docker指南
确保你的系统上安装了 NVIDIA GPU 驱动程序,并且版本与 Docker 期望的版本兼容。命令,检查输出中是否有 NVIDIA GPU 支持的信息。对于 Docker 版本 19.03 及以上,使用。后,都需要重启 Docker 服务。编辑 Docker 的配置文件。
2024-08-21 14:26:26
2016
原创 torch.einsum详解
用于计算queries和keys张量在注意力机制中的点积,相似性得分。它通过爱因斯坦求和约定指定了如何在多维张量上执行这些操作,使得代码更简洁、效率更高。
2024-08-20 21:41:22
2463
1
原创 【AIGC】因果注意力(Causal Attention)原理及其代码实现
因果注意力(Causal Attention)是一种自注意力机制,广泛应用于自回归模型中,尤其是在自然语言处理和时间序列预测等任务中。它的核心思想是在生成每个时间步的输出时,只关注当前时间步及之前的时间步,确保生成过程的因果性,从而避免模型在预测时依赖未来的信息。
2024-08-15 13:35:33
5699
2
原创 【深度学习】Layer Normalization原理及其代码实现
Layer Normalization 是一种用于归一化神经网络内部激活的技术,旨在提高训练稳定性和速度。与 Batch Normalization 不同,Layer Normalization 对每个样本的特征维度进行归一化,而不是对整个 mini-batch 进行归一化。它特别适用于处理序列数据,如自然语言处理中的模型。
2024-08-05 20:31:52
1256
原创 N-gram 相似度计算与评估
\text{Precision}_{\text{Unigram}} = \frac{\text{重叠的Unigram数量}}{\text{生成文本中的总Unigram数量}} = \frac{5}{6} \approx 0.83 ]\text{Recall}_{\text{Unigram}} = \frac{\text{重叠的Unigram数量}}{\text{参考文本中的总Unigram数量}} = \frac{5}{6} \approx 0.83。
2024-08-02 16:59:09
1735
原创 【目标检测】非极大值抑制(Non-Maximum Suppression, NMS)步骤与实现
计算两个边界框的交集坐标# 计算交集面积# 计算每个边界框的面积# 计算并集面积# 计算IoU= 0 else 0return ioupicked = [] # 存储被选择的边界框索引indexes = np.argsort(scores)[::-1] # 按分数降序排列索引picked.append(current) # 选择当前最高分的边界框indexes = indexes[1:] # 移除当前最高分的索引。
2024-07-25 21:56:26
712
1
原创 【AIGC】多头注意力机制(MHA)的NumPy实现
MHA是Transformer架构中的关键组成部分,它允许模型在多个位置并行地捕捉输入序列的不同方面。与传统的注意力机制相比,MHA通过将输入数据分割成多个头,每个头学习不同的表示,从而增强了模型的表达能力。
2024-07-25 02:21:01
835
原创 多头注意力模块 (Multi-Head Attention, MHA) 代码实现(pytorch)
定义一个继承自nn.Module的类。定义四个线性层,分别用于查询(Q)、键(K)、值(V)的变换和最终输出的投影。同时定义一个dropout层。
2024-07-01 01:01:53
1907
原创 【深度学习】 卷积(Convolution2D)、最大池化(Max Pooling)和 Dropout 的NumPy实现
水平有限,有问题随时交流~
2024-06-05 21:48:40
493
原创 【机器学习】之 kmean算法原理及实现
K-Means 是一种简单有效的聚类算法,适用于许多实际问题。然而,它也有一些局限性,因此在选择聚类算法时应考虑数据集的特性和具体需求。
2024-05-30 21:45:55
483
原创 【机器学习】之 K-最近邻(KNN)算法原理及实现
K-最近邻(KNN)是一种经典的机器学习算法,适用于分类和回归任务。尽管其简单性和直观性使其在许多应用中表现良好,但在处理大规模数据集和高维数据时,KNN的计算复杂度和存储需求成为其主要限制因素。通过合理选择K值和使用适当的距离度量,KNN可以在许多实际问题中取得令人满意的效果。
2024-05-30 21:36:59
1953
原创 基于BERT模型的文本分类示例
定义一个继承自Dataset的类,用于封装文本数据和标签。# ...(省略类定义的代码以节省空间)使用AdamW作为优化器,并定义交叉熵损失函数。num_training_steps = len(dataloader) * 3 # 假设我们训练3个epoch。
2024-05-21 21:19:06
516
原创 双向长短期记忆网络(BiLSTM)简介
双向长短期记忆网络(Bidirectional Long Short-Term Memory, BiLSTM)是一种改进的循环神经网络(Recurrent Neural Network, RNN),专门设计用于处理序列数据。BiLSTM 能够通过结合前向和后向两个 LSTM 网络的输出来捕捉序列中的双向依赖关系。
2024-05-17 16:16:55
13407
原创 maxpooling2d的C++细节实现
/ 最大池化函数// 实现代码// 计算输出张量的大小// 初始化输出张量float// 对输入张量进行最大池化++i) {++j) {// 计算当前池化窗口的位置// 找到池化窗口内的最大值h < end_h;++w) {
2024-05-09 20:45:56
424
原创 LoRA(Low-Rank Adaptation)原理与应用
LoRA是一种用于调整和微调大型神经网络的技术,特别适用于直接微调整个网络参数成本高昂或不切实际的情况。
2024-04-23 22:08:53
1518
原创 `extern` 关键字的用法cpp
extern关键字在 C 和 C++ 中用于声明变量或函数是在其他地方定义的,它有助于跨源文件共享数据和函数,以及在 C++ 中与 C 语言代码进行互操作。
2024-04-16 17:39:01
568
原创 统计Excel文件中的答案选项和类别
通过这个脚本,我们可以快速地从Excel文件中提取和统计答案选项及职务类别的分布情况,并将结果以JSON格式保存,便于进一步的分析和处理。上述代码和文档中的文件路径和问题列表是示例性的,需要根据实际情况进行调整。在运行脚本之前,请确保您的环境中已安装了。脚本将自动执行统计操作,并将结果保存到指定的JSON文件中。水平有限,有问题随时交流;
2024-04-07 18:37:52
681
原创 Python 中的 `deque` 用法介绍
deque(双端队列)是 Python模块中的一个数据结构,它允许你在队列的两端进行添加(append)和弹出(pop)操作。deque是一个线程安全的双向链表,适用于需要快速添加和删除元素的场景。以下是deque的一些基本用法和特性。
2024-04-02 15:38:39
991
原创 C++ STL中Queue和Stack的用法
队列(Queue)是一种先进先出(FIFO)的数据结构,在C++的STL中由queue模板类实现。// 创建一个整数类型的队列栈(Stack)是一种后进先出(LIFO)的数据结构,在C++的STL中由stack模板类实现。// 创建一个整数类型的栈。
2024-04-02 14:16:55
475
原创 BERT模型中句子Tokenize和ID转换的过程
当我们使用BERT或其他类似的预训练语言模型时,将句子转换为token的过程通常涉及以下几个步骤:初始化Tokenizer:首先,我们需要导入相应的Tokenizer类,并根据需求选择合适的预训练模型进行初始化。分词(Tokenization):分词是将句子分割成单词或者子词(subword)的过程。这个过程通常包括将句子转换为小写(如果使用的模型支持小写输入)、识别并标记单词边界、将单词分割为子词(如果使用的是基于WordPiece或Byte-Pair Encoding的模型),等等。
2024-03-26 19:10:40
1210
原创 Embedding层的简述及其代码实现
Embedding层是深度学习中常用的一种层类型,主要用于将离散的符号(如单词、字符等)映射到连续的低维稠密向量空间中。它在自然语言处理(NLP)任务中得到广泛应用,用于将词汇表中的单词映射为向量表示,从而方便神经网络模型理解和处理文本数据。
2024-03-26 17:30:37
925
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人