自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(154)
  • 收藏
  • 关注

原创 Pytorch lightning: ValueError: dictionary update sequence element #0 has length 1; 2 is required报错解决

方法的入参中存在不可以序列化的参数,就会报错。这些参数需要以列表元素的形式传给。看报错信息中的方法调用可知,在调用这个方法的时候,方法传进来的所有参数以yaml的形式存下来。是一个方法,它们都不是一个值。比如,在下面的代码中,

2024-09-24 19:38:50 256

原创 Huggingface Trainer:Removed shared tensor while saving问题的解决

trainer调用_save方法时,默认入参state_dict=None,然后_save方法通过self.model.state_dict()获得state_dict,导致报错。解决思路是提前在调用_save之前提前通过self.accelerator.get_state_dict(self.model)把state_dict取出,然后直接带state_dict入参来调用_save方法,实现权重存储。简单来说,这个bug的危害是trainer.save()无法正确存储权重。

2024-06-24 21:58:03 678

原创 PaddleOCR:GPU环境依赖踩坑全记录

PaddlePaddle这东西的适配性做得很差,运行环境对包版本经常很严格。我们今天要处理的问题是复现一份基于paddleocr的代码,要求支持cpu推理和gpu单卡推理。注意,如果是从头开始开发,建议直接选取最新版本的paddle和paddleocr,然后在后续开发中保持版本不变。报错找不到库文件,参考。解决:安装新版本gcc。

2024-05-21 10:03:51 2454

原创 Pytorch: 解决因pytorch版本不同 导致训练ckpt加载失败

在torch1.6版本及其以后,torch.save函数使用了一种新的文件格式。torch.load任然保持着对旧版本的兼容,如果高版本环境下想要保存低版本兼容的模型文件格式,可以使用_use_new_zipfile_serialization=False参数设定。大家都会遇到在工程项目实施阶段,如果训练的模型文件在不同的torch版本环境下部署时,会报错~。转载自SSDesign的知乎文章。

2024-05-18 12:09:01 468

原创 命令行快速下载Google Drive,One Drive,GitHub release大文件

然而,Google Drive,One Drive等网盘没有提供命令行工具,不方便大批量下载数据;GitHub release虽然提供了可供直接wget/curl的超链接,但是直接下载非常缓慢。使用命令行下载Google Drive/OneDrive大文件:https://zhuanlan.zhihu.com/p/632737814。使用镜像网站提供的超链接快速下载GitHub release:https://zhuanlan.zhihu.com/p/521472595。

2024-04-08 11:20:34 626

原创 Python:实操pdf2image

【代码】Python:实操pdf2image。

2024-04-03 16:21:16 541

原创 Linux:Input/Output Error:记一次服务器接外部硬盘拷贝故障排除

老运维魅力时刻,遇到外接存储设备读写异常的日常小问题,丰富经验秒杀之。

2024-03-20 14:40:56 2333

原创 Pytorch:多模态大模型预训练、大模型微调:加载数据的正确姿势

由于训练数据集过大,在训练读取数据时,直接使用Dataset类可能会带来性能问题。Pytorch的Dataset类在初始化时会将整个数据集加载到内存中,如果数据集非常大,没法全部放在内存里,使用Dataset类会显著增加硬盘io次数,带来性能下降。对于近期兴起的多模态大模型的预训练和微调,常见情况是训练数据规模极大,通常可以达到1m-100m级别。此时,训练数据通常用一个上百万行的jsonl文件存储,每行对应一条json格式的训练数据,其中可能包括数据关联的其他图、音、视频数据的索引。

2024-03-15 14:47:46 1435 1

原创 Pytorch:报错RuntimeError: CUDA error: no kernel image is available for execution on the device详细处理报告

这个报错的原因就是pytorch和cuda的版本不匹配。具体的解决方案如下照做即可。本文主要分享一些干货,即个人踩的一些坑、造成的原因以及对应的解决方法......

2024-01-19 10:42:34 1306

原创 Brain Teaser概率类 - 抛硬币

你有 17 个硬币,我有 16 个硬币,我们同时抛掷所有硬币。如果你有更多的正面,那么你赢,否则我赢。你获胜的概率是多少?划分出3个相互独立的事件:你抛前16枚硬币;对于每种可能的取样结果,构造对称的取样结果:每一个硬币的正反面翻转的情况。综上所述你赢的概率为p + (1-2p) * 1/2 = 1/2.此解的关键是发掘出「你的反面不大于我的反面」这一条件。由对称性易见你赢的概率为1/2.

2023-11-10 03:46:34 485

原创 Brain Teaser概率类 - 三局两胜制

假设每局比赛的结果是独立同分布的,且遵循伯努利分布,其中一方的胜率为p,另一方为1-p. 则两局结束的概率是。. 即在该假设下,两局结束的概率始终不低于三局结束的概率。三局两胜制比赛,两局结束还是三局结束的概率大?

2023-11-10 03:45:29 602

原创 Brain Teaser计算类 - 双败淘汰制

我们不妨改记胜者组、败者组为“0败组”,“1败组”。、“n败组”,并假设从“i败组”失败的人会进入“i+1败组”进入下一轮比赛。首先,不难发现在第1轮到第n-1轮进入败者组的人数都为偶数,所以在第2轮到第n轮,败者组中没有发生轮空现象。因此,在第n轮后留在败者组的全体人员都进行了n场比赛,且他们的战绩均为n-1胜1败。个人(n>=1)参加的双败淘汰赛中,胜者组每一轮有一半的人胜出而继续留在胜者组。所以第n轮之后,胜者组第一次出现只剩1人的情况,此人的战绩是n胜0败?. 因此第n轮后的败者组有。

2023-11-10 03:44:22 534

原创 Python多线程实战:多线程并行很快,但写文件要加锁

如果不加锁的话,可能会出现写入混乱,最终的文件中包含0xc4这样的乱码。一个补救方式是手动检查文件中的非Unicode字符并删掉。

2023-09-20 10:23:56 633

原创 Python:深入解析CUDA和cuDNN依赖:该装啥?怎么装?

为了解决这个问题,最稳妥的方式是按照官网步骤,安装一遍cuda和cudnn. 然而这样搞非常浪费时间,而且我们知道ONNX其实只是需要特定版本的库文件。在某些比较方便的情况下,Python的包管理器conda和pip能帮我们简化安装步骤。问题背景是,待部署的ONNX model是通过特定版本的ONNX获得的,从而需要和特定版本的cuda和cudnn搭配。最近为了ONNX的版本问题,又对本文所述内容进行了深入的调研。可以查到ONNX,cuda,cudnn三者的版本搭配。

2023-08-11 19:20:45 439

原创 Python:conda install cudatoolkit的备选方案:pip install nvidia-cudnn-*:

由于使用深度学习框架的不同,有的时候我们需要切换cudnn环境。比起在系统中安装多个cudnn版本,更便捷的方法是通过在python环境下安装cudnn工具,这样不同的cudnn环境就可以用python的包管理器(如conda等)管理,使用起来很方便。然而有的时候我们用的包管理器不是cuda,或者我们用的python包镜像不支持cuda,这时只能用pip. 以cuda11为例,此时可以使用以下指令安装需要的cudnn工具;最常用的方式是在conda下,通过安装不同版本的cudatoolkit来满足要求。

2023-07-25 17:58:33 10355 6

原创 Python OSError: symbol cublasLtHSHMatmulAlgoInit, version libcublasLt.so.11 not defined的解决

类似这类问题的产生原因都是cudnn的环境变化,如重装cudnn相关工具包等。所以每次通过conda或pip重装过cudnn的包之后,要警惕上述这类问题的发生。引用的,后者所在的路径通过报错信息给出。也遇到过相似的问题,所以很明显就是一个找不到。在启动终端后,运行程序前没,运行以下指令添加。在这次这个问题里面,找不到的文件是。至此问题的解决方案已经清晰,加一下。

2023-07-25 17:52:08 1920 5

原创 Python3: 上下文管理器、with语法、同时打开两个文件

上下文管理器可以使用class语句或contextlib模块中的装饰器来定义。例如,下面是一个使用classclass MyContext : def __enter__(self) : # 进入代码块时执行的操作 return self def __exit__(self , exc_type , exc_value , traceback) : # 退出代码块时执行的操作 pass with MyContext() as obj : # 使用obj执行代码块中的操作 pass上面的代码中,

2023-07-05 16:37:29 1086

原创 Python算法实战精讲: 讲个二分查找怎么水了1000多字?

然而,获知这个最小元的过程是non-trivial的,甚至在很多时候,我们的场景本身就是要求这个最小元,例如求解函数在某个单调区间上的零点。其实根本原因在于之前的bisect和sorted list都只是侧重于维护有序结构,二分查找只是基于有序结构的插入来顺便实现一下。直觉上,一个有序的indexable对象是一个严格全序有限集,于是对于满足上述条件的。希望这篇文章让大家感受到二分查找的应用之广泛,从而体会到开发一个通用的二分查找接口是困难的。的子集,这个子集一定有唯一最小元。的函数题的一部分即可。

2023-06-25 15:38:42 153

原创 Python JSON读取:json.load时报错OSError: It looks like the config file at ‘xx‘ is not a valid JSON file.

Python的dict和原生的json格式长得很像,有的时候偷懒直接拿python代码里定义的dict放进文件里,却会发现编辑器的高亮显示问题。实际上,Python的dict语法和json还是有很多不同的,比如key需要用双引号索引(而不是单引号),true false需要全部小写。我们可以用json.dumps来获得一个Python dict对应的json string,也可以用https://jsonlint.com/ 这个网站检查一个json是否符合语法。

2023-05-09 20:09:31 1987 1

原创 OpenCV:cv2.imread读取含有非法字符的文件名时报Segmentation fault(段错误)及解决

会报错Segmentation fault. 这个问题很严重,因为会直接core dumped,无法在python代码中catch住。解决方法是先用numpy读出来,然后转存为img的格式。时,如果遇到读取文件名含有非法字符,如。

2023-04-20 21:46:58 679

原创 PaddleOCR遇到RuntimeError: (PreconditionNotMet) Cannot load cudnn shared library. 错误的解决

在Nvidia驱动正常安装,nvidia-smi正常显示的情况下,在anaconda环境下跑常规的深度学习框架(tensorflow,pytorch,paddlepaddle等等)的时候,一般不需要额外安装CUDA或cuDNN等工具,而是直接conda/pip安装正确版本的cudatoolkit就可以(cudatoolkit的版本和nvidia-smi的显示保持一致即可)。我们要做的事情是找到这些文件的位置,而不是在某个路径放一个这些文件的副本。确定库文件的位置后,把。,此时这些库文件的位置在。

2023-04-01 22:05:00 7175 5

原创 Python:基于callable对象实现自我指涉

在Python中实现自我指涉,方式是通过sys._getframe来获得当前正在运行的函数的代码段,然后重新赋予参数运行这段代码。

2023-03-12 16:11:05 189

原创 Python:基于生成器和filter实现惰性求值 - 以筛法质数计算为例

函数式编程值得称道的是惰性计算概念的引入,以Haskell实现埃氏筛法计算质数的代码作为代表。在Python中通过生成器实现类似的功能。

2023-03-06 10:41:26 195

原创 Python:迭代器和生成器的编程模型 - 以阴阳谜题为例

笨比试图理解Scheme实现的阴阳谜题未果,先针对比较简单的Python展开理解🥺本文介绍了理解Python求解阴阳谜题的语法基础,然后讲解了Python求解阴阳谜题的代码,包括详细的执行过程。

2023-02-28 20:38:42 219

原创 Python:Python数组上的原地快排

考虑快排的其中一步,我们从无序列表中取出头部元素,执行若干步交换操作后,该元素左侧的元素均小于该元素,右侧的元素均不小于该元素。返回该元素的最终位置,并对该元素左右两侧的子列表进行快排。表示列表中最右侧的未与该元素比较的元素的索引。如果其后的元素小于该元素,则将两个元素的位置交换,并修改该元素的索引(如果其后的元素大于等于该元素,则将后方元素和数组最右未比较元素交换,并修改数组最右未比较元素的索引(每一步排序中,该元素和数组中的每个元素进行一次比较,即。我们可以将该元素反复与其后的元素比较。

2023-02-25 15:25:53 378

原创 Python:二分查找模板

Python的二分查找library只有针对indexable的bisect,这东西很不通用。在functools日益强大的趋势下,Python没有个好用的二分查找库函数也是离谱。于是我们只好自己写一个。

2022-10-13 13:14:09 359

原创 Haskell:Data Functor和Control Functor

从范畴论的角度来看,Control functors are the enriched functors of the category of linear functions, while data functors are the regular functors.从功能上,Data Functor只能做值的容器,Control Functor表示的是一个值在被执行副作用时的中间状态。Data Functor和Control Functor是两个不同的概念,只是在Haskell中有所混淆。

2022-10-12 16:07:23 141

原创 Haskell:嵌套函子,join,函子组合子

不难发现我们需要一个“嵌套函子”的类型。考虑到“两个函子结合之后依然是函子”,我们先看看用。事情来自于我的一个突发奇想,想要实现一个广义的。函数,实现处理嵌套Functor的效果,即实现。类型类,而不是定义新的类型类,能不能实现效果。所以我们的问题转化为,如何把类型如。不允许部分应用,所以是不能写出一个。的,即使新定义一个类型类也不行。另外一个思路是直接定义一个。的值相互转化,即如何把。

2022-09-19 15:47:33 237

原创 OJ:L3-021 神坛 伪解 排序后遍历

L3-021 神坛 (30 分)在古老的迈瑞城,巍然屹立着 n 块神石。长老们商议,选取 3 块神石围成一个神坛。因为神坛的能量强度与它的面积成反比,因此神坛的面积越小越好。特殊地,如果有两块神石坐标相同,或者三块神石共线,神坛的面积为0.000。长老们发现这个问题没有那么简单,于是委托你编程解决这个难题。...

2022-08-03 21:07:22 230

原创 OJ:L2-012 关于堆的判断

L2-012 关于堆的判断 (25 分)将一系列给定数字顺序插入一个初始为空的小顶堆H[]。随后判断一系列相关命题是否为真。xxyxyxy。

2022-08-03 21:03:41 123

原创 OJ:L3-001 凑零钱 DFS

韩梅梅喜欢满宇宙到处逛街。现在她逛到了一家火星店里,发现这家店有个特别的规矩:你可以用任何星球的硬币付钱,但是绝不找零,当然也不能欠债。韩梅梅手边有 10​4​​ 枚来自各个星球的硬币,需要请你帮她盘算一下,是否可能精确凑出要付的款额。...

2022-08-03 20:45:55 188

原创 Windows连接Linux服务器的若干种方案

Windows连接Linux服务器的若干种方案

2022-06-16 10:51:03 412

原创 几种在lambda演算中编码自然数的方式

学习了A Tutorial Introduction to the Lambda Calculus, by Raul Rojas这篇lecture note,简单概括了一下文章内容。以及对Encoding Data in Lambda Calculus: An Introduction, by Frank (Peng) Fu的学习笔记

2022-06-05 12:17:56 499

原创 OJ:整除n解题报告

整除n解题报告Regular Expression for Binary Numbers Divisible by n: https://www.codewars.com/kata/5993c1d917bc97d05d000068这道题主要的思路是借助DFA,先写出读取01串对应的DFA,然后化简成正则表达式。以下对这种思路进行详细介绍。Codewars目前Python下最高赞版本就是相同的思路,同时代码简化到极致。DFA的构造具体来说,从前到后地1读取01串,以当前读到的部分串对n的余数情况,确定

2022-06-05 12:14:03 324

原创 Python3:双向队列deque实战 - BrainFuck执行器

CONST_INF = int(1e7+7)class Table: def __init__(self): self.register = [0, 0] self.ptr = 0 def table_expand(self): if self.ptr == 0: self.ptr += len(self.register) self.register = [0] * len(self.re

2022-05-18 20:58:34 719

原创 Scheme: Understanding Continuation-Passing-Style the Easiest Way, with the example of Fibonacci

; Fibonacci (define (fibo i) (if (= i 0) 1 (* i (fibo (- i 1))))); Rewrite in if-then-else form(define (ite i cond kSucc kFail) (if (cond i) (kSucc i) (kFail i)))(define (fiboIte i) (ite i (lambda (i) (= i 0))

2022-05-18 13:13:18 141

原创 OJ:二叉搜索树+区间操作:Splay Tree

题目设计一个基于二叉搜索树的数据结构,提供以下两个操作:对于给定值,输出树中所有小于/小于等于该元素的节点个数对于给定值,删除树中所有小于/小于等于该元素的值要求均摊的时间复杂度为logn。题解对于第一个条件,在树的根节点增加一个属性值,始终维护树中的节点个数即可。对于第二个条件,需要用到Splay树,支持树的区间删除。Splay树区间删除的实现:使用划分操作把树分成两棵or三棵,再进行合并即可问题背景在函数式编程语言里面没有random access的数据结构,对于一个有序结构,

2022-04-12 13:04:46 515

原创 Haskell: 求解24点问题的多种变体

24点问题给定一个长度为4的整数数组 cards ,代表你有 4 张卡片,每张卡片上都包含一个整数。您应该使用运算符 [’+’, ‘-’, ‘*’, ‘/’] 和括号 ‘(’ 和 ‘)’ 将这些卡片上的数字排列成数学表达式,以获得值 target。你须遵守以下规则:除法运算符 ‘/’ 表示有理数除法。例如, 4 /(1 - 2 / 3)= 4 /(1 / 3)= 12每个运算都在两个数字之间。特别是,不能使用 “-” 作为一元运算符。例如,如果 cards =[1,1,1,1] ,则表达式 “-1

2022-03-28 23:53:16 542

原创 OJ:LeetCode 102 103 层序遍历两则 - BFS+额外标记

层序遍历102. Binary Tree Level Order TraversalGiven the root of a binary tree, return the level order traversal of its nodes’ values. (i.e., from left to right, level by level).Example 1:Input: root = [3,9,20,null,null,15,7]Output: [[3],[

2022-03-27 03:41:35 248

原创 OJ:LeetCode 65 Valid Number - 正则表达式

本文已参与「新人创作礼」活动,一起开启掘金创作之路题目65. Valid NumberA valid number can be split up into these components (in order):A decimal number or an integer.(Optional) An 'e' or 'E', followed by an integer.A decimal n

2022-03-27 03:31:14 251

《数学与泛型编程-高效编程的奥秘》个人阅读笔记

《数学与泛型编程-高效编程的奥秘》个人阅读笔记

2023-02-25

空空如也

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

TA关注的人

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