Python
文章平均质量分 57
WinterShiver
自然语言处理博士生,熟悉Python/Haskell
CSDN放的东西都是草稿,很多东西可能是是粗浅乃至错误的,欢迎讨论
展开
-
Pytorch lightning: ValueError: dictionary update sequence element #0 has length 1; 2 is required报错解决
方法的入参中存在不可以序列化的参数,就会报错。这些参数需要以列表元素的形式传给。看报错信息中的方法调用可知,在调用这个方法的时候,方法传进来的所有参数以yaml的形式存下来。是一个方法,它们都不是一个值。比如,在下面的代码中,原创 2024-09-24 19:38:50 · 217 阅读 · 0 评论 -
PaddleOCR:GPU环境依赖踩坑全记录
PaddlePaddle这东西的适配性做得很差,运行环境对包版本经常很严格。我们今天要处理的问题是复现一份基于paddleocr的代码,要求支持cpu推理和gpu单卡推理。注意,如果是从头开始开发,建议直接选取最新版本的paddle和paddleocr,然后在后续开发中保持版本不变。报错找不到库文件,参考。解决:安装新版本gcc。原创 2024-05-21 10:03:51 · 2176 阅读 · 0 评论 -
Pytorch: 解决因pytorch版本不同 导致训练ckpt加载失败
在torch1.6版本及其以后,torch.save函数使用了一种新的文件格式。torch.load任然保持着对旧版本的兼容,如果高版本环境下想要保存低版本兼容的模型文件格式,可以使用_use_new_zipfile_serialization=False参数设定。大家都会遇到在工程项目实施阶段,如果训练的模型文件在不同的torch版本环境下部署时,会报错~。转载自SSDesign的知乎文章。原创 2024-05-18 12:09:01 · 431 阅读 · 0 评论 -
Python:实操pdf2image
【代码】Python:实操pdf2image。原创 2024-04-03 16:21:16 · 507 阅读 · 0 评论 -
Pytorch:多模态大模型预训练、大模型微调:加载数据的正确姿势
由于训练数据集过大,在训练读取数据时,直接使用Dataset类可能会带来性能问题。Pytorch的Dataset类在初始化时会将整个数据集加载到内存中,如果数据集非常大,没法全部放在内存里,使用Dataset类会显著增加硬盘io次数,带来性能下降。对于近期兴起的多模态大模型的预训练和微调,常见情况是训练数据规模极大,通常可以达到1m-100m级别。此时,训练数据通常用一个上百万行的jsonl文件存储,每行对应一条json格式的训练数据,其中可能包括数据关联的其他图、音、视频数据的索引。原创 2024-03-15 14:47:46 · 1330 阅读 · 0 评论 -
Pytorch:报错RuntimeError: CUDA error: no kernel image is available for execution on the device详细处理报告
这个报错的原因就是pytorch和cuda的版本不匹配。具体的解决方案如下照做即可。本文主要分享一些干货,即个人踩的一些坑、造成的原因以及对应的解决方法......原创 2024-01-19 10:42:34 · 1237 阅读 · 0 评论 -
Python多线程实战:多线程并行很快,但写文件要加锁
如果不加锁的话,可能会出现写入混乱,最终的文件中包含0xc4这样的乱码。一个补救方式是手动检查文件中的非Unicode字符并删掉。原创 2023-09-20 10:23:56 · 606 阅读 · 0 评论 -
Python:深入解析CUDA和cuDNN依赖:该装啥?怎么装?
为了解决这个问题,最稳妥的方式是按照官网步骤,安装一遍cuda和cudnn. 然而这样搞非常浪费时间,而且我们知道ONNX其实只是需要特定版本的库文件。在某些比较方便的情况下,Python的包管理器conda和pip能帮我们简化安装步骤。问题背景是,待部署的ONNX model是通过特定版本的ONNX获得的,从而需要和特定版本的cuda和cudnn搭配。最近为了ONNX的版本问题,又对本文所述内容进行了深入的调研。可以查到ONNX,cuda,cudnn三者的版本搭配。原创 2023-08-11 19:20:45 · 423 阅读 · 0 评论 -
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 · 9781 阅读 · 6 评论 -
Python OSError: symbol cublasLtHSHMatmulAlgoInit, version libcublasLt.so.11 not defined的解决
类似这类问题的产生原因都是cudnn的环境变化,如重装cudnn相关工具包等。所以每次通过conda或pip重装过cudnn的包之后,要警惕上述这类问题的发生。引用的,后者所在的路径通过报错信息给出。也遇到过相似的问题,所以很明显就是一个找不到。在启动终端后,运行程序前没,运行以下指令添加。在这次这个问题里面,找不到的文件是。至此问题的解决方案已经清晰,加一下。原创 2023-07-25 17:52:08 · 1877 阅读 · 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 · 1068 阅读 · 0 评论 -
Python算法实战精讲: 讲个二分查找怎么水了1000多字?
然而,获知这个最小元的过程是non-trivial的,甚至在很多时候,我们的场景本身就是要求这个最小元,例如求解函数在某个单调区间上的零点。其实根本原因在于之前的bisect和sorted list都只是侧重于维护有序结构,二分查找只是基于有序结构的插入来顺便实现一下。直觉上,一个有序的indexable对象是一个严格全序有限集,于是对于满足上述条件的。希望这篇文章让大家感受到二分查找的应用之广泛,从而体会到开发一个通用的二分查找接口是困难的。的子集,这个子集一定有唯一最小元。的函数题的一部分即可。原创 2023-06-25 15:38:42 · 148 阅读 · 0 评论 -
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 · 1909 阅读 · 1 评论 -
OpenCV:cv2.imread读取含有非法字符的文件名时报Segmentation fault(段错误)及解决
会报错Segmentation fault. 这个问题很严重,因为会直接core dumped,无法在python代码中catch住。解决方法是先用numpy读出来,然后转存为img的格式。时,如果遇到读取文件名含有非法字符,如。原创 2023-04-20 21:46:58 · 659 阅读 · 0 评论 -
Python:基于callable对象实现自我指涉
在Python中实现自我指涉,方式是通过sys._getframe来获得当前正在运行的函数的代码段,然后重新赋予参数运行这段代码。原创 2023-03-12 16:11:05 · 179 阅读 · 0 评论 -
Python:基于生成器和filter实现惰性求值 - 以筛法质数计算为例
函数式编程值得称道的是惰性计算概念的引入,以Haskell实现埃氏筛法计算质数的代码作为代表。在Python中通过生成器实现类似的功能。原创 2023-03-06 10:41:26 · 192 阅读 · 0 评论 -
Python:迭代器和生成器的编程模型 - 以阴阳谜题为例
笨比试图理解Scheme实现的阴阳谜题未果,先针对比较简单的Python展开理解🥺本文介绍了理解Python求解阴阳谜题的语法基础,然后讲解了Python求解阴阳谜题的代码,包括详细的执行过程。原创 2023-02-28 20:38:42 · 213 阅读 · 0 评论 -
Python:二分查找模板
Python的二分查找library只有针对indexable的bisect,这东西很不通用。在functools日益强大的趋势下,Python没有个好用的二分查找库函数也是离谱。于是我们只好自己写一个。原创 2022-10-13 13:14:09 · 348 阅读 · 0 评论 -
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 · 707 阅读 · 0 评论 -
Python函数式编程:谈谈global, nonlocal和闭包 - 以计数器为例
函数式编程原创 2022-01-16 00:41:54 · 501 阅读 · 0 评论 -
Python: scipy+matplotlib 绘制beta分布图
贝塔分布(Beta Distribution) 是一个作为伯努利分布和二项式分布的共轭先验分布的密度函数,在机器学习和数理统计学中有重要应用。在概率论中,贝塔分布,也称Β分布,是指一组定义在(0,1) 区间的连续概率分布。...转载 2021-04-18 02:32:22 · 3574 阅读 · 0 评论 -
Python环境管理 - conda,pip和virtualenv
Python环境管理创建并使用虚拟环境示例conda以下分别是建立、激活、退出、删除conda create -n env python=3.5conda activate envconda deactivateconda remove -n env --all详见 https://www.cnblogs.com/xuyaowen/p/python-anaconda-cheatsheet.htmlvirtualenv对应关系同上virtualenv -p /home/chong_zh原创 2020-12-28 21:20:19 · 214 阅读 · 0 评论 -
Python pickle的基本扩展:变量以文件形式存取,基于pkl.dump()和pkl.load()
下面两个接口,基于pickle实现了变量以文件形式存取:def save_file(var, filename): """输入一个变量和一个文件名,将这个变量存入这个文件名对应的文件中。这个函数基于pickle.dump @param: var(python var): python中的一个变量 @param: filename(str): 变量将存入这个目标路径。这个路...原创 2020-04-05 15:26:36 · 1317 阅读 · 0 评论 -
Python: 常用的软件包
Python: 常用的软件包建议使用包管理工具anaconda进行虚拟环境的管理和包的安装!系统built-in必知必会:os, re, time, random命令行参数:docopt其他tqdm:进度条py2exe:字面意思six:处理python 2.x和3.x的兼容操作文件二进制文件:pickleexcel:openpyxl,xlrd,xlwt科学...原创 2020-04-05 15:21:18 · 442 阅读 · 0 评论 -
Python Import 大观
Python import 大观目录Python import 大观引言import的工作原理Python import语法Python书写import语句的风格指导绝对位置import相对位置import扩充阅读参考本文大部分参考1。本文对前面import工作原理的部分讲的挺好,但到最后相对位置import的部分烂尾了。如果只是想解决import使用中的困惑,请读引言。引言在Pyt...翻译 2019-11-10 16:04:56 · 124 阅读 · 0 评论 -
DDA、Bresenham直线画线算法,中点圆、中点椭圆算法&可视化(Python3实现)
本文主要技术:直线、圆、椭圆四种绘制算法,Python3(Matplotlib,PyQt5)本文是笔者上计算机图形学课程时课内实验的报告,内容仅供参考。1-实验目的及要求实现直线、圆、椭圆的四种绘图算法,保证其在所有可能情况下给出正确结果;封装计算程序,并设计图形界面,实现接收绘图参数输入和展示绘制实际图像的图形化绘图程序。2-实验环境本实验在Ubuntu16.04下完成,编程...原创 2019-02-03 12:59:17 · 8607 阅读 · 9 评论 -
Python:有参数的装饰器:以显示函数执行时间为例
文章目录预备知识正文解释应用预备知识装饰器是一个函数。通过学习菜鸟教程来了解装饰器的基本概念、作用和Python语法。正文本文介绍一个用来显示函数执行时间的装饰器。以下的代码用来装饰一个函数,使函数运行完毕后能显示函数的运行时间,而且可以自定义提示信息。def time_decorator_with_prompt(prompt_infor): def time_decorator...原创 2019-12-09 01:10:45 · 1302 阅读 · 0 评论 -
Python Openpyxl Excel打开操作 zipfile 错误解决:zipfile.BadZipFile: File is not a zip file
文章目录错误描述原因解决参考错误描述使用openpyxl新建workbook并执行操作,在save workbook 到某文件目录时,报错zipfile.BadZipFile: File is not a zip file原因上一个打开的workbook没有正常关闭;新建的workbook在save时,对于已有文件的覆盖方式不对。也有可能是其他错误,但是不重要,看解决方法,可以从根...原创 2019-12-08 11:57:07 · 61394 阅读 · 6 评论 -
Python函数式编程: 求解24点
Python函数式编程: 求解24点引言本文实现三种大同小异的基于“遍历+递归”的搜索,从一个侧面体现了函数式编程的妙处。(所以,仅仅是简单的“遍历+递归”真的称得上是函数式编程么?捂脸笑)如果只想看24点的解法,直接看版本2.文章目录Python函数式编程: 求解24点引言求解思路基础:加减乘除、等于的定义版本0:阉割版,只能按照列表顺序加符号版本1:阉割版,只能串行版本2:正...原创 2019-11-22 19:49:34 · 605 阅读 · 0 评论 -
Python3中的函数式编程要素
Python3中的函数式编程要素学习python函数式编程时,学到的一些杂乱无章的要素。主要的范例来自最后的几篇参考,笔者基于参考材料构建例子,加入了相当多的笔者个人心得。文章目录Python3中的函数式编程要素用递归代替循环设计递归解决问题用列表推导式(列表解析)代替for循环基于列表推导式,设计递归解决问题用与或非逻辑代替流程控制if-elsewhile高阶函数高阶函数概论map re...原创 2019-11-21 14:30:43 · 449 阅读 · 0 评论