随笔分类 -  python编程

该分类用于存放python编程相关的一些知识点和笔记
摘要:一个纯净的自动微分框架—autograd本文介绍了一个可以基于CPU和numpy的自动微分计算框架。如果只是需要使用自动微分计算的功能,就可以直接在CPU环境下简便的部署,快捷的完成环境搭建。 阅读全文
posted @ 2025-09-27 09:16 DECHIN 阅读(250) 评论(0) 推荐(0)
摘要:Blelloch并行扫描算法本文介绍了一个可以用于并行化串行累计操作的Blelloch算法,可以通过用空间换时间+并行计算的方法,来降低特定计算的时间复杂度。这里我们给出了算法原理的大致介绍,以及基于Numpy的算法代码实现。 阅读全文
posted @ 2025-09-18 10:46 DECHIN 阅读(144) 评论(0) 推荐(1)
摘要:关于nan的大小判定规则本文通过几个简单的代码示例,展示了一下NAN在PyTorch框架下形成的原因。通过了解这个原因和规则,有助于解决在深度学习开发和训练过程中出现的NAN的问题。 阅读全文
posted @ 2025-07-21 17:46 DECHIN 阅读(181) 评论(0) 推荐(0)
摘要:Python中的cls变量本文介绍了在Python的classmethod装饰的类方法的cls变量的意义,通过几个不同的示例对比,凸显cls变量在Python编程中的应用场景。对于大多数的场景来说,使用普通的Python类和函数定义即可。如果需要在类的外部使用类的内部函数,但是可能有多个不同初始化的类输入,那么可以使用staticmethod进行装饰。如果只有一个类,而有多种不同的输入场景下,可以使用classmethod进行装饰。 阅读全文
posted @ 2025-06-03 17:50 DECHIN 阅读(294) 评论(2) 推荐(1)
摘要:解决Cupy相关报错本文记录了一些使用python-cupy的过程中有可能的遇到的一些问题,一部分是环境配置问题,还有一部分是运行输入问题。 阅读全文
posted @ 2025-04-25 15:53 DECHIN 阅读(165) 评论(0) 推荐(0)
摘要:PCA主成分分析的Python实现接上一篇文章介绍的矩阵特征分解,本文介绍了矩阵特征分解在主成分分析(PCA)算法中的应用。对于PCA算法,最直观的理解就是,在高维数据中找到一个低维的空间,使得所有的数据点投影到该低维空间之后尽可能的分离。 阅读全文
posted @ 2024-12-06 11:12 DECHIN 阅读(1364) 评论(0) 推荐(0)
摘要:Numpy本征值求解本文介绍了一下使用Numpy计算矩阵的特征值求解和特征值分解问题。Numpy的eig特征求解函数可以直接输出给定矩阵所有的特征值,和对应的所有特征列向量所构成的矩阵。再使用Numpy的矩阵求逆函数,即可得到相关矩阵的EVD特征值分解。 阅读全文
posted @ 2024-12-04 10:51 DECHIN 阅读(411) 评论(0) 推荐(0)
摘要:Jax Jit模式下的Array输出本文仅介绍一个可以在Jax的Jit即时编译模式下,也能够正常通过print打印函数来输出Jax Array内容的方法。 阅读全文
posted @ 2024-11-26 17:01 DECHIN 阅读(213) 评论(0) 推荐(0)
摘要:Jax中关于NonZero的使用在使用Jax的过程中,有时候会遇到函数输出是一个动态的Shape,这种情况下我们很难利用到Jax的即时编译的功能,不能使得性能最大化。这也是使用Tensor数据结构来计算的一个特点,有好有坏。本文介绍了Jax的另外一个函数NonZero,可以使得我们能够编译那些动态Shape输出的函数。 阅读全文
posted @ 2024-11-21 11:15 DECHIN 阅读(142) 评论(0) 推荐(0)
摘要:Jax中关于Device ID的配置本文主要介绍了2个在Jax框架中配置显卡Device ID的方法。第一种方法可以使用环境变量进行配置,对于众多的深度学习框架都是可以兼容的。而第二种方案是在Jax即时编译的过程中通过Jax生成的Device对象来控制数据的传输和函数执行的Device ID。 阅读全文
posted @ 2024-11-05 16:47 DECHIN 阅读(204) 评论(0) 推荐(0)
摘要:Python实现多维傅里叶变换继前一篇文章中的一维傅里叶变换,本文介绍了多维傅里叶变换的物理图像和基本原理,并附带了Python简单实现。并将Python的计算结果与Numpy中已经实现的二维傅里叶变换的结果进行对比。 阅读全文
posted @ 2024-09-26 11:04 DECHIN 阅读(720) 评论(2) 推荐(1)
摘要:Python计算傅里叶变换本文介绍了离散傅里叶变换和快速傅里叶变换的基本原理及其对应的Python代码实现,并将计算结果与numpy所集成的fft函数进行对比。其实现在FFT计算的成熟工具已经有很多了,不论是CPU上scipy的fft模块还是GPU上的cufft动态链接库,都有非常好的性能。但还是得真正去了解计算背后的原理,和相关的物理图像,才能更恰当的使用这个强大的工具。 阅读全文
posted @ 2024-09-25 14:50 DECHIN 阅读(1027) 评论(1) 推荐(2)
摘要:Python存储与读写二进制文件本文介绍了一种在Python中将Numpy数组转存为一个紧凑的二进制格式的文件,及其使用内存映射的形式进行读取的方案。一个二进制的数据流,不仅可以更加方便页形式的内存映射,相比于传统的Numpy单精度浮点数数组还有一个可哈希的特性。总体来说是一个对于高性能计算十分友好的存储格式,在cudaSPONGE中作为一个分子动力学模拟轨迹输出的格式使用。 阅读全文
posted @ 2024-09-09 17:49 DECHIN 阅读(539) 评论(0) 推荐(0)
摘要:解决auditwheel repair过程rpath被修改的问题在开源Python项目中,如果使用到了Cython或者CUDA C++等需要编译的后端技术,那么要传到pypi上就需要经过一个PEP标准的审查。要通过审查,就要经过多个版本的Python的构建,以及auditwheel修复的过程。本文解决了一个auditwheel修复过程中有可能出现的rpath路径索引问题。 阅读全文
posted @ 2024-09-03 09:34 DECHIN 阅读(250) 评论(0) 推荐(0)
摘要:Python中的分布式框架Ray的安装与使用本文介绍了基于Python的分布式框架Ray的基本安装与使用。Ray框架下不仅可以通过conda和Python十分方便的构建一个集群,还可以自动的对分布式任务进行并发处理,且支持GPU分布式任务的提交,极大的简化了手动分布式开发的工作量。 阅读全文
posted @ 2024-08-28 11:23 DECHIN 阅读(4365) 评论(0) 推荐(0)
摘要:PEP 508:为不同版本Python指定不同依赖如果使用Python第三方包的某一个版本有问题,而不同版本Python所对应的软件最新版本又不一致,这种情况下如何在requirements.txt文件中指定软件最高版本是非常重要的。这里根据PEP 508的规范,做了一个Numpy版本要求numpy<=1.21.6 || 1.28>numpy>=1.23的示例。 阅读全文
posted @ 2024-08-27 10:31 DECHIN 阅读(379) 评论(0) 推荐(0)
摘要:解决pypi上传轮子unsupported platform tag &#39;linux_x86_64&#39;问题对于一个纯Python的项目,从构建到发布是比较容易的。但是如果构建的轮子中含有C代码或者生成的动态链接库,那么构建发布有另外一套规则。我们需要经过manylinux平台的验证,以及动态链接库的固化等过程,还需要当心动态链接库的存放地址等信息。本文主要是提供了一个流程化的思路,具体操作对于不同的项目和平台来说差异是比较大的。 阅读全文
posted @ 2024-08-13 10:17 DECHIN 阅读(202) 评论(0) 推荐(0)
摘要:Cython将Numpy数组转为自定义结构体这篇文章介绍了在Cython中定义结构体,并在Python的Numpy数组/MemoryView和自定义结构体之间进行数据转换的方法。Cython有着非常Pythonic的编程范式,又具有接近于C语言的性能,对于Python开发者而言确实是一个很棒的工具。 阅读全文
posted @ 2024-08-07 09:36 DECHIN 阅读(243) 评论(0) 推荐(0)
摘要:使用Cython调用CUDA Kernel函数从Python接口调用GPU进行加速的方案有很多,包括Cupy和PyCuda以及之前介绍过的Numba,还可以使用MindSpore、PyTorch和Jax等成熟的深度学习框架,这里介绍了一种直接写CUDA Kernel函数的方案。为了能够做到CUDA-C和Python编程的分离,这里引入了Cython作为中间接口,这样一来Python开发者和C开发者可以去共同开发相应的高性能方法。 阅读全文
posted @ 2024-08-02 14:32 DECHIN 阅读(490) 评论(0) 推荐(0)
摘要:h5py文件写入之——flush和updatehdf5是一个在量子化学和分子动力学模拟中经常有可能被用到的一种数据存储格式,得益于其良好的压缩率和完整性校验,一定程度上保障了其数据/轨迹存储的可靠性。本文介绍了关于hdf5文件的两个操作:更新已有的hdf5文件中的数据内容,以及flush同步更新的方法。 阅读全文
posted @ 2024-07-29 11:17 DECHIN 阅读(367) 评论(0) 推荐(0)