自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(174)
  • 资源 (4)
  • 收藏
  • 关注

原创 【2024】LeetCode HOT 100——导航

现已完结。

2023-08-18 23:38:37 326

原创 重新审视MHA与Transformer

本文将基于PyTorch源码重新审视MultiheadAttention与Transformer。,但当时的实现大部分是基于教程的,这次将基于PyTorch源码重新实现一遍。

2023-07-31 14:03:54 1679

原创 动态规划专题——背包问题

详解四种背包:01背包、完全背包、多重背包、分组背包。

2023-02-13 21:29:20 39280 22

原创 深入浅出单调栈与单调队列

深入浅出单调栈与单调队列

2023-02-11 12:02:37 7110 12

原创 史上最详细的KMP算法教程,看这一篇就够了

前缀函数、next数组、nextval数组,BF算法,KMP算法,你想要知道的都在这了!

2023-02-04 12:59:37 10417 21

原创 下班前几分钟,我彻底弄懂了并查集

详解并查集概念及其应用

2023-01-27 11:13:35 4851 4

原创 还不会二分查找?看这一篇就够了

详解整数二分和浮点数二分,以及对应的STL函数

2023-01-14 22:32:04 5986 12

原创 深入理解PyTorch中的nn.Embedding

深入理解nn.Embedding模块

2022-06-27 13:07:20 9995 20

原创 conda常用命令汇总

conda常用命令汇总

2022-06-03 08:58:42 45740 21

原创 【2024】LeetCode HOT 100——图论

这里以DFS为例,DFS不需要开方向数组,不需要队列,实现更为简洁。经典的Flood Fill算法,可BFS也可DFS。如果仿照C++,用列表实现,实际运行效率会很低。为先修课程的要求数。

2024-06-29 16:42:54 413

原创 【2024】LeetCode HOT 100——回溯

时我们便得到了一个答案。个右括号组成的所有括号序列中,合法的括号序列有。因为共有卡塔兰数个方案,且构造每个方案需要。是否是回文串,这样就可以在回溯的过程中以。一个括号序列是合法的当且仅当它满足以下条件。而所有的括号序列共有。数组(布尔数组),它代表。为所有可行解的长度之和。是三个字母的数字个数,是四个字母的数字个数。的时间,故时间复杂度为。我们可以预处理出来一个。

2024-06-29 14:37:18 349

原创 【2024】LeetCode HOT 100——二分查找

34. 在排序数组中查找元素的第一个和最后一个位置调用即可。

2024-06-28 14:54:54 195

原创 【2024】LeetCode HOT 100——堆&栈

最大堆存储较小的一半元素,最小堆存储较大的一半元素。最大堆的堆顶是较小一半元素的最大值,最小堆的堆顶是较大一半元素的最小值。:如果最大堆的元素个数比最小堆多超过1个,则将最大堆的堆顶元素移到最小堆。如果最小堆的元素个数比最大堆多,则将最小堆的堆顶元素移到最大堆。:如果总元素个数为奇数,中位数为最大堆的堆顶。如果总元素个数为偶数,中位数为最大堆的堆顶与最小堆的堆顶的平均值。:如果新元素小于或等于最大堆的堆顶,将其插入最大堆。否则,将其插入最小堆。,我们可以借助计数排序的思想,将其降低至。

2024-06-27 16:50:35 166

原创 【2024】LeetCode HOT 100——贪心算法

出发能够到达的最远位置(可以理解为不断拓展右边界),如果。因此,时间复杂度是与价格数组的长度。),不依赖于输入大小。所需的额外空间是常量级别的。首先可以证明,能够跳到的位置一定是。代码只使用了几个额外的变量 (代码中的循环遍历了价格数组。和上一题一样,只不过本题是求。(题目保证可以跳到最后)。我们可以设置两个指针,(可用反证法证明)。

2024-06-26 12:06:40 201

原创 【2024】LeetCode HOT 100——技巧

这样的升序对,说明整个序列都是降序的,直接翻转该序列即可。之外每个节点都有一条入边,这意味着图中一定有环。这道题是「荷兰国旗问题」,我们需要维护三个指针。,首先从后往前找到第一个升序的元素对,记为。仍是降序的,我们让这一段变为升序的即可。,说明每个节点都有一条出边,且除了。向左移动,任一时刻,需要满足,重复了不止一次,说明节点。,那么数组的下标范围是从。的入边至少有两条,即。

2024-05-29 17:39:51 207 1

原创 【2024】LeetCode HOT 100——多维动态规划

我们可以枚举回文串的中心,然后从中心开始向两边扩展,并不断更新最大值。回文子串有两种类型,一种是偶数长度的,一种是奇数长度的。枚举中心的时候要同时考虑两种类型的回文串。的最少步数,我们只关注如何从。的最长公共子序列的长度。

2024-05-27 19:38:01 124

原创 【2024】LeetCode HOT 100——动态规划

如果只有一间房屋,则偷窃该房屋,可以偷窃到最高总金额。如果只有两间房屋,则由于两间房屋相邻,不能同时偷窃,只能偷窃其中的一间房屋,因此选择其中金额较高的房屋进行偷窃,可以偷窃到最高总金额。这道题的第一想法可能使用贪心来做,但贪心是会失败的,来看这样一个示例:硬币数组。在两个选项中选择偷窃总金额较大的选项,该选项对应的偷窃总金额即为前。但要注意的是,这是一个只涉及体积,不涉及价值的背包问题。结尾的最长有效括号的长度。的所有子串中,只有它本身是字典中的单词,故取。结尾的最长递增子序列的长度,那么本题答案为。

2024-05-26 17:30:19 101

原创 浮点数的存储方式、bf16和fp16的区别

目录1. 小数的二进制转换2. 浮点数的二进制转换3. 浮点数的存储3.1 以fp32为例3.2 规约形式与非规约形式4. 各种类型的浮点数5. BF16和FP16的区别Ref1. 小数的二进制转换十进制小数转换成二进制小数采用「乘2取整,顺序排列」法。具体做法是:用 222 乘十进制小数,可以得到积,将积的整数部分取出,再用 222 乘余下的小数部分,又得到一个积,再将积的整数部分取出,如此进行,直到积中的小数部分为零,或者达到所要求的精度为止。然后把取出的整数部分按顺序排列起来,先取的整数作为二进

2024-04-17 18:11:21 1096 2

原创 Python中的抽象基类(ABC)

抽象基类(Abstract Base Classes,ABCs)是一种特殊的类,它声明了一组方法和属性,但不完全实现它们。这些类不能被实例化,其主要目的是被继承和实现。通过定义一个或多个抽象方法,ABCs为子类提供了一个框架,要求子类实现特定的方法或属性。抽象基类有助于确保子类具有一致的接口设计。这意味着所有继承自同一个抽象基类的子类都将实现相同的方法和属性,从而实现了接口的一致性和可预测性。这种模式特别适用于需要多种实现相同接口的场景,如插件系统、策略模式等。

2024-04-09 20:16:01 474

原创 【2024】LeetCode HOT 100——二叉树

的方式遍历这棵树,而在访问左子树或者右子树的时候我们按照同样的方式遍历,直到遍历完整棵树。因此整个遍历过程天然具有递归的性质,我们可以直接用递归函数来模拟这一过程。首先我们需要了解什么是二叉树的中序遍历:按照访问。

2024-04-09 14:29:07 98

原创 一文搞懂dataclass和field

它旨在通过使用装饰器和类型注解来减少样板代码,特别是在创建一个。

2024-03-15 17:19:17 995 1

原创 还在用torch.save()?快来看看safetensors吧!

Safetensors 是一个由 HuggingFace 开发的库(采用 Rust 编写),用于安全地存储和加载张量(tensors)。与其他序列化格式(如 pickle)相比,Safetensors 提供了更快的加载速度和更高的安全性。这个库特别适用于深度学习模型的序列化,尤其是在需要高效加载大型模型权重时。

2024-03-11 23:12:09 644

原创 浅谈Mixin(混入模式)

在面向对象编程中,追求代码复用性和灵活性是主要目标之一。Python作为一种功能强大的编程语言,为达成这些目标提供了诸多机制。其中,Mixin概念便是经常被提及的一种模式。所谓Mixin,亦即混入(Mix-in),是一种编程模式,通常表现为一些特定的类。这些类封装了一些独立的功能单元,以便其它子类通过继承来获得,其主旨在于将这些功能融入子类中。得益于Python的多重继承特性,一个子类能够继承多个Mixin类,这使得根据需求灵活组合不同功能成为可能。

2024-03-11 11:40:42 558

原创 Python中的泛型编程

泛型编程的引入主要是为了解决代码重用的问题。在没有泛型的情况下,如果你想要实现一个功能(比如排序或查找),对于不同类型的数据(整数、浮点数、字符串等)你可能需要写多个几乎相同的函数。这不仅增加了代码量,也增加了维护成本和出错的机会。泛型编程允许你编写与类型无关的代码,从而使得一个函数或一个类可以用于多种类型,减少了代码的重复,提高了代码的复用性和可维护性。

2024-03-08 18:16:45 1699 1

原创 RuntimeError: CUDA error: out of memory

执行torch.load导入某个.pt。

2024-03-07 14:35:09 315

原创 如何高效地将大文件按行数进行均匀划分?

⚠️ 读者可能注意到,在实验三中,PFS划分结果的行数和并不等于623517,而是等于626323,这是因为两者统计行数的方式不一样。,如果单机去跑效率将会十分低下,考虑将这个大文件均匀地划分成多份,让一台机器负责一份,最后再合并多份的结果。首先可以明确的是,最后一份的行数肯定要小于前两份的行数,只需要计算出。实验二:选用4.3G的txt文件,总行数为3275572,取。实验一:选用1.4G的txt文件,总行数为419402,取。实验三:选用1.8G的txt文件,总行数为623517,取。

2024-03-05 00:11:13 1097

原创 下班前几分钟,我彻底弄懂了YAML

的,可以是任何有效的字符串,用来在稍后引用这个锚点。一旦定义了锚点,就可以通过别名在文档的其他地方引用它。创建别名时,使用。

2024-03-04 16:50:19 959

原创 HDFS常用命令总结

HDFS(Hadoop Distributed File System)是一种Hadoop分布式文件系统,具备高度容错特性,支持高吞吐量数据访问,可以在处理海量数据(TB或PB级别以上)的同时最大可能的降低成本。HDFS适用于大规模数据的分布式读写,特别是读多写少的场景。NameNode(名称节点):它是HDFS的主服务器,负责管理文件系统的命名空间和客户端对文件的访问。NameNode执行文件系统的命名操作,如打开、关闭、重命名文件或目录。

2024-02-26 22:00:58 834

原创 一种简易的多进程文件读写器

在数据清洗场景下,我们可能需要对一个.jsonl文件清洗以得到另一个.jsonl文件。一种直观的做法就是逐行读取,逐行清洗,然后逐行写入,这一流程的示意图如下:pass这种单进程的处理方法非常耗时,若改用多进程,则能显著提高效率。注意到在时间消耗方面,有Clean≫Read≈WriteClean≫Read≈Write因此可以考虑让一个进程去ReadRead,多个进程去CleanWriteCleanWrite。

2024-02-25 21:56:48 888 2

原创 详解Megatron中的数据混合算法(BlendableDataset)

🧑‍💻 本文主要讲解Megatron中的数据混合算法。

2024-02-24 14:12:26 1318

原创 -bash: /root/.ssh/authorized_keys: Read-only file system

由于跳板机不支持命令,为了配置免密登录,考虑在服务器上手动使用cat命令写入跳板机公钥cat 但却出现了以下错误。

2024-02-22 19:45:03 678

原创 tmux: can‘t create socket

在某个HDFS服务器上执行tmux ls尝试过更改/tmp目录的权限、卸载重装tmux、以及删除旧的socket文件🗒️ 在/tmp目录下,tmux使用这样的命名方式来区分不同用户产生的tmux会话。注意,是一个目录,相应的套接字文件在该目录下。

2024-02-22 11:16:16 278

原创 git初始化一个远程空仓库

git初始化一个远程空仓库主要有以下三种途径:不过切记,在初始化之前要完成git全局设置以标识身份:

2024-02-10 13:58:27 999

原创 Python判断列表A中是否有元素出现在了列表B中

方法耗时(秒)暴力法≈480000≈480000哈希表法0.51∼0.530.51∼0.53集合法0.50.50.5如果有更快的方法欢迎在评论区补充~

2024-02-08 22:28:01 963

原创 关于LLaMA Tokenizer的一些坑...

字符是回车符(Carriage Return, CR),在ASCII表中的位置是十进制的13或者十六进制的0x0D。这个字符最初设计用于打字机和早期计算机,指的是将打印头移动到一行的开始位置而不换到下一行,这样新的文本就会覆盖掉同一行上旧的文本。文件中对应的行抽取出来,单独对它进行分词,然后将分词结果打印到终端上,发现并没有换行,然而将这个分词结果单独写入到一个新的文件中时,换行出现了。文件对应行的文档的分词结果,分词之间以空格分隔。文件,发现出现问题的行的开头压根没有数字,文件中的每行内容实际上是。

2024-02-08 21:29:44 2059

原创 ModuleNotFoundError: No module named ‘google‘

即使尝试也依然会报同样的错。

2024-02-05 15:17:34 659 1

原创 设置 SSH 主机 xxx: (details) 连接到 VS Code Server - 重试 x

在vscode上ssh连接到某台服务器的时候一直显示重试,但在本地终端里却可以正常ssh。

2024-01-23 17:17:10 1220

原创 WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!

这个消息表明SSH客户端检测到远程主机的身份(即其SSH密钥)与之前记录在文件中的信息不符。

2024-01-15 22:58:25 484

原创 error creating /tmp/tmux-0 (Permission denied)

在root身份下执行tmux ls。

2024-01-06 11:58:57 689 2

原创 Linux进阶系列(二)——lscpu、htop、seq、shuf、sort

lscpu命令是Linux系统中用来显示关于CPU架构的信息的工具。它详细展示了CPU的相关信息,包括型号、核心数、架构类型、缓存大小等等。

2023-12-25 12:24:01 1534

LLaMA Tokenizer

LLaMA原生Tokenizer,词表大小为32000。

2024-02-09

IMDb-Large Movie Review Dataset

数据集官网:https://ai.stanford.edu/~amaas/data/sentiment/ 数据集的训练集和测试集各有25000个样本,且正负样本个数相同,均为12500个。 该数据集和官网提供的相比,去除了一些不必要的文件,其他均未改动。

2022-10-28

彻底解决Mac端git clone/push速度太慢的问题

彻底解决Mac端git clone/push速度太慢的问题,详情请参阅文档。

2022-07-29

常见英文单词数据集(NLP)

该数据集可用于NLP任务,其中train.txt中包含了8000个单词,test.txt中包含了2000个单词,训练集和测试集互不交叉。 注:数据集为乱序,且均为小写字母组成的单词。 博主整理不易,仅收费2软妹币,望理解。

2022-06-23

PyTorch 人名分类数据集

PyTorch官方提供的数据集,用于NLP任务。

2022-06-21

PyTorch CNN 训练/测试/绘图 模块

在学习到 d2l 中的 CNN 板块时,发现对于大部分 CNN,除了架构网络的代码不同以外,其训练和测试的代码大部分情况都是相同的,为了简化代码的书写特地编写了这个模块(雾)。 该模块基于 PyTorch 实现。 如何使用该模块请看我的这篇文章:https://blog.csdn.net/raelum/article/details/124716176 该模块支持 CNN 的训练和测试,同时可绘制训练集/测试集的损失函数曲线,训练集/测试集的精度。此外,该模块能够计算 GPU 的读取速度。

2022-05-15

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除