- 博客(121)
- 收藏
- 关注
原创 【Math】奇异值分解(SVD)详解及 Python 实现
奇异值分解(Singular Value Decomposition,简称 SVD)是矩阵分解的一种方法,它将任意矩阵AAUΣVTAm×nUm×mAATΣm×nAVTn×nATA奇异值分解不仅适用于方阵,也适用于任意矩阵。它在信号处理、图像压缩、降维和推荐系统等应用中有着广泛的应用。
2024-12-01 17:59:19
1813
原创 CycleGAN算法简述
CycleGAN是一种图像到图像的翻译模型,旨在无配对训练数据的情况下完成跨域图像转换。传统方法需要成对的输入-输出数据,但这种配对数据的获取往往代价高昂且难以实现。CycleGAN通过使用无配对数据的训练策略,实现从一个图像域到另一个域的有效转换,使其在艺术风格迁移、季节变化和对象转换等任务中表现出色。
2024-11-09 21:39:07
1471
原创 矩阵迹(Trace)的性质及简单推导
迹(Trace)是一个矩阵的对角线元素之和。对于矩阵AAATraceA∑iAiiTraceAi∑AiiTraceABTraceBATraceABTraceBA即两个矩阵相乘后的迹不依赖于它们的顺序。∂∂XTraceAXAT∂X∂TraceAXAT迹函数可以通过矩阵元素的线性组合进行转换,导数为AAA的转置。
2024-10-22 11:32:16
2011
原创 【pytorch】评估计算 PyTorch 模型的 FLOPs 和参数量
在深度学习模型中,评估模型的复杂性和效率时,FLOPs(每秒浮点运算次数)和参数量是两个重要指标。FLOPs 可以衡量模型的计算量,参数量则决定模型的规模和存储需求。将以一个简单的卷积神经网络(CNN)为例,演示如何计算这些指标。
2024-10-16 12:14:18
1051
2
原创 Docker(19.03及其以上版本)配置nvidia-docker指南
确保你的系统上安装了 NVIDIA GPU 驱动程序,并且版本与 Docker 期望的版本兼容。命令,检查输出中是否有 NVIDIA GPU 支持的信息。对于 Docker 版本 19.03 及以上,使用。后,都需要重启 Docker 服务。编辑 Docker 的配置文件。
2024-08-21 14:26:26
1717
原创 torch.einsum详解
用于计算queries和keys张量在注意力机制中的点积,相似性得分。它通过爱因斯坦求和约定指定了如何在多维张量上执行这些操作,使得代码更简洁、效率更高。
2024-08-20 21:41:22
2073
1
原创 【AIGC】因果注意力(Causal Attention)原理及其代码实现
因果注意力(Causal Attention)是一种自注意力机制,广泛应用于自回归模型中,尤其是在自然语言处理和时间序列预测等任务中。它的核心思想是在生成每个时间步的输出时,只关注当前时间步及之前的时间步,确保生成过程的因果性,从而避免模型在预测时依赖未来的信息。
2024-08-15 13:35:33
4309
2
原创 【深度学习】Layer Normalization原理及其代码实现
Layer Normalization 是一种用于归一化神经网络内部激活的技术,旨在提高训练稳定性和速度。与 Batch Normalization 不同,Layer Normalization 对每个样本的特征维度进行归一化,而不是对整个 mini-batch 进行归一化。它特别适用于处理序列数据,如自然语言处理中的模型。
2024-08-05 20:31:52
1079
原创 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
1474
原创 【目标检测】非极大值抑制(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
649
1
原创 【AIGC】多头注意力机制(MHA)的NumPy实现
MHA是Transformer架构中的关键组成部分,它允许模型在多个位置并行地捕捉输入序列的不同方面。与传统的注意力机制相比,MHA通过将输入数据分割成多个头,每个头学习不同的表示,从而增强了模型的表达能力。
2024-07-25 02:21:01
696
原创 多头注意力模块 (Multi-Head Attention, MHA) 代码实现(pytorch)
定义一个继承自nn.Module的类。定义四个线性层,分别用于查询(Q)、键(K)、值(V)的变换和最终输出的投影。同时定义一个dropout层。
2024-07-01 01:01:53
1580
原创 【深度学习】 卷积(Convolution2D)、最大池化(Max Pooling)和 Dropout 的NumPy实现
水平有限,有问题随时交流~
2024-06-05 21:48:40
431
原创 【机器学习】之 kmean算法原理及实现
K-Means 是一种简单有效的聚类算法,适用于许多实际问题。然而,它也有一些局限性,因此在选择聚类算法时应考虑数据集的特性和具体需求。
2024-05-30 21:45:55
437
原创 【机器学习】之 K-最近邻(KNN)算法原理及实现
K-最近邻(KNN)是一种经典的机器学习算法,适用于分类和回归任务。尽管其简单性和直观性使其在许多应用中表现良好,但在处理大规模数据集和高维数据时,KNN的计算复杂度和存储需求成为其主要限制因素。通过合理选择K值和使用适当的距离度量,KNN可以在许多实际问题中取得令人满意的效果。
2024-05-30 21:36:59
1773
原创 基于BERT模型的文本分类示例
定义一个继承自Dataset的类,用于封装文本数据和标签。# ...(省略类定义的代码以节省空间)使用AdamW作为优化器,并定义交叉熵损失函数。num_training_steps = len(dataloader) * 3 # 假设我们训练3个epoch。
2024-05-21 21:19:06
477
原创 双向长短期记忆网络(BiLSTM)简介
双向长短期记忆网络(Bidirectional Long Short-Term Memory, BiLSTM)是一种改进的循环神经网络(Recurrent Neural Network, RNN),专门设计用于处理序列数据。BiLSTM 能够通过结合前向和后向两个 LSTM 网络的输出来捕捉序列中的双向依赖关系。
2024-05-17 16:16:55
9987
原创 maxpooling2d的C++细节实现
/ 最大池化函数// 实现代码// 计算输出张量的大小// 初始化输出张量float// 对输入张量进行最大池化++i) {++j) {// 计算当前池化窗口的位置// 找到池化窗口内的最大值h < end_h;++w) {
2024-05-09 20:45:56
375
原创 LoRA(Low-Rank Adaptation)原理与应用
LoRA是一种用于调整和微调大型神经网络的技术,特别适用于直接微调整个网络参数成本高昂或不切实际的情况。
2024-04-23 22:08:53
1238
原创 `extern` 关键字的用法cpp
extern关键字在 C 和 C++ 中用于声明变量或函数是在其他地方定义的,它有助于跨源文件共享数据和函数,以及在 C++ 中与 C 语言代码进行互操作。
2024-04-16 17:39:01
546
原创 统计Excel文件中的答案选项和类别
通过这个脚本,我们可以快速地从Excel文件中提取和统计答案选项及职务类别的分布情况,并将结果以JSON格式保存,便于进一步的分析和处理。上述代码和文档中的文件路径和问题列表是示例性的,需要根据实际情况进行调整。在运行脚本之前,请确保您的环境中已安装了。脚本将自动执行统计操作,并将结果保存到指定的JSON文件中。水平有限,有问题随时交流;
2024-04-07 18:37:52
607
原创 Python 中的 `deque` 用法介绍
deque(双端队列)是 Python模块中的一个数据结构,它允许你在队列的两端进行添加(append)和弹出(pop)操作。deque是一个线程安全的双向链表,适用于需要快速添加和删除元素的场景。以下是deque的一些基本用法和特性。
2024-04-02 15:38:39
895
原创 C++ STL中Queue和Stack的用法
队列(Queue)是一种先进先出(FIFO)的数据结构,在C++的STL中由queue模板类实现。// 创建一个整数类型的队列栈(Stack)是一种后进先出(LIFO)的数据结构,在C++的STL中由stack模板类实现。// 创建一个整数类型的栈。
2024-04-02 14:16:55
452
原创 BERT模型中句子Tokenize和ID转换的过程
当我们使用BERT或其他类似的预训练语言模型时,将句子转换为token的过程通常涉及以下几个步骤:初始化Tokenizer:首先,我们需要导入相应的Tokenizer类,并根据需求选择合适的预训练模型进行初始化。分词(Tokenization):分词是将句子分割成单词或者子词(subword)的过程。这个过程通常包括将句子转换为小写(如果使用的模型支持小写输入)、识别并标记单词边界、将单词分割为子词(如果使用的是基于WordPiece或Byte-Pair Encoding的模型),等等。
2024-03-26 19:10:40
1078
原创 Embedding层的简述及其代码实现
Embedding层是深度学习中常用的一种层类型,主要用于将离散的符号(如单词、字符等)映射到连续的低维稠密向量空间中。它在自然语言处理(NLP)任务中得到广泛应用,用于将词汇表中的单词映射为向量表示,从而方便神经网络模型理解和处理文本数据。
2024-03-26 17:30:37
838
原创 C++ 中的 unordered_map 用法文档
是 PyTorch 中用于生成标量张量的函数之一。它会创建一个包含一个元素且值为1的标量张量,通常用于表示单个数值,比如损失函数的值或者模型的参数初始化值。
2024-03-25 20:06:51
436
原创 细节之PyTorch 中的 torch.ones([])
是 PyTorch 中用于生成标量张量的函数之一。它会创建一个包含一个元素且值为1的标量张量,通常用于表示单个数值,比如损失函数的值或者模型的参数初始化值。
2024-03-25 16:01:31
836
原创 注意力机制与交叉注意力:理论、公式与实现
在自然语言处理(NLP)和深度学习领域,注意力机制和交叉注意力是两种强大的技术,它们允许模型在处理序列数据时动态地聚焦于最重要的部分。本文将介绍这两种机制的数学原理,并通过代码示例展示如何在PyTorch中实现它们。
2024-03-22 11:53:31
5083
原创 解决 Jupyter Notebook 中没有显示想要的内核的问题
如果在 Jupyter Notebook 的 “Kernel” 菜单中没有显示你想要的内核(kernel),可能是因为该内核没有正确安装或配置到 Jupyter Notebook 中。:如果内核仍然没有出现在 “Kernel” 菜单中,你可以尝试手动将内核添加到 Jupyter Notebook 中。是你想要添加的内核的名称,安装完成后,重新启动 Jupyter Notebook,然后尝试切换到你添加的新内核。安装完成后,重新启动 Jupyter Notebook,然后尝试切换内核。
2024-03-21 16:21:56
4902
1
原创 FLOPS 与 FLOPs 的区别解析
概念不同:FLOPS 表示每秒浮点运算次数,是计算设备的计算性能指标;而 FLOPs 表示模型中的浮点运算操作总数,是模型计算复杂度的指标。应用不同:FLOPS 用于评估计算设备的处理能力和性能;FLOPs 用于衡量模型的计算复杂度和计算量。单位不同:FLOPS 的单位是每秒浮点运算次数(如 TFLOPS、GFLOPS);FLOPs 的单位是浮点运算操作总数(如 MFLOPs、GFLOPs)。水平有限,有问题随时联系;
2024-03-21 15:32:47
2951
原创 Domain Adaptation模型之pix2pix原理简介
pix2pix和CycleGAN是两种基于深度学习的图像到图像翻译模型,它们在图像风格转换、图像修复、图像增强等多个方面都有广泛的应用。通过理解它们的原理和网络结构,我们可以更好地应用这些模型来解决实际问题,并推动计算机视觉领域的发展。
2024-03-18 20:00:07
755
原创 直方图均衡化原理与代码实现
直方图均衡化是一种有效的图像增强技术,通过调整图像的灰度级别分布,改善图像的对比度和细节。在实际应用中,根据具体任务需要,可以选择是否使用直方图均衡化以及调整参数以达到最佳效果。
2024-01-31 21:58:11
668
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人