- 博客(112)
- 收藏
- 关注
原创 深度学习生成音乐:midi文件转为mp3、wav音频
看了不少帖子,都提到使用github上的midi2audio来调用fluidsynth,实际没有必要。midi2audio只是简单对fluidsynth工具的封装,使用midi2audio反而将问题复杂化,完全可以自己使用python调用。fluidsynth是一个基于SoundFont 2规范的声音合成工具,没有可视化界面,使用API方式调用。因此,还需要下载.sf2声音文件。其中, "Splendid 136.sf2"为声音字体,-F代表输出音频文件,-r代表音频的采样频率。
2024-01-10 09:17:29
1200
原创 算法工程师必备:一篇文章学会90%的Numpy常用知识
kelly会在公众号「kelly学技术」不定期更新Python、机器学习、深度学习等文章,感兴趣的朋友可以关注一下,期待与您交流。Numpy是Python的一个专注于数值运算的第三方扩展包,提供了丰富的数组操作、线性代数、傅立叶变换和随机数等功能。你好,我是kelly,今天分享:工作中常用的Numpy操作。这篇文章不展示运行结果,直接展示用法,纯干货,侧重方法总结。几乎是数据挖掘、机器学习、深度学习等方向的必备技能。
2024-01-10 09:14:01
367
原创 深度学习生成音乐:MIDI格式,Python mido库使用
kelly会在公众号「kelly学技术」不定期更新Python、机器学习、深度学习等文章,感兴趣的朋友可以关注一下,期待与您交流。MIDI用音符、控制参数等来记录音乐,而不是声音信号本身,用以告诉MIDI设备要做什么、怎么做。因此,MIDI文件不是一段真正声音,而是记录声音的信息,用以告诉声卡如何播放音乐的一组指令。最近一段时间会写自动生成音乐的系列文章,今天是第1篇:如何创建MIDI文件。音强:音振幅的大小,音强的不断变化是音乐表达情感的因素之一。time:与前一个音的间隔,单位为毫秒。
2024-01-09 09:17:34
986
原创 深度学习图像处理:图像处理易错点
低频:颜色缓慢的变化,一般为非图像边缘部分,构成图像的主要成分。低频信息是图像的近似信息,形成图像的基本灰度等级,对图像结构的决定作用较小。1)PIL.Image、OpenCV处理图像时,原点为左上角,向左/右方向分别对x执行加/减操作,向上/下方向分别对y执行加/减操作。此外,通过对图像进行傅里叶变换,可以将图像的高频和低频分量分离出来,再对分量分别进行傅里叶逆变换得到对应分量图像。高频图像:像素值在不同位置变化很大的图像,像素值从一个值快速变化到下一个值。低频图像:像素值相对均匀或变化非常缓慢的图像。
2024-01-09 09:15:08
464
原创 Python基础进阶8:多线程共享资源,常用技巧,threading库
比如线程1内部COUNT为10时,CPU转到执行线程2将COUNT修改为11,CPU再次转回到线程1执行+=1,这时COUNT就不是10,而是11,导致错误发生。使用threading.Lock()创建全局锁lock,线程内部对全局变量修改时,需要先获取锁后才能执行,执行完成后释放锁。解决方法:使用线程锁机制,同个时刻只有一个线程能执行指定代码片段,从而防止不同线程在同一时间对全局资源进行修改。描述:运行多线程时,如果不同线程对同一个全局变量进行修改,则会导致错误结果。
2024-01-08 09:32:48
1233
原创 Python基础进阶7:执行外部命令的五个方法,建议使用第五个
指定stdout为subprocess.PIPE,表示打开标准输出流管道,将命令执行结果以CompleteProcess类实例的方式保存在返回值中,不会直接输出在控制台。指定参数stdout为subprocess.PIPE,则将执行结果重定向到stdout变量中,stdout变量保存执行结果。3)subprocess.run:输入为列表形式,为外部命令的拆分,返回值为CompletedProcess实例。总体运行效果:执行命令后,返回成功或者失败标记,其中成功为0,失败为255。
2024-01-08 09:27:43
1277
原创 Python基础进阶6:单例模式
平时用的最多还是第1和第4,其中第1种使用最方便,笔者也最常用,使用时不会出错。这里只介绍第1和第4种。__new__:用来创建类实例(分配类实例内存空间,并返回类实例的引用(内存地址))在Python代码运行过程中,一个类只允许创建一个实例,即内存中只存在一个类实例。前提知识:在Python中,模块(.py文件)天然是单例的,模块只会被加载一次。你好,我是kelly,今天分享:Python单例模式,这是常见的设计模式之一。思想:在创建类实例时,判断是否已存在类实例,若存在则直接返回,否则创建新实例。
2024-01-08 09:19:14
369
原创 Python基础进阶4:常见魔法方法
_str__和__iter__均是输出对象的字符串表示:__str__在使用str()函数或者print()函数时,自动调用;Python对象之间运算,比如四则运算,实际是使用了魔法方法,如下图所示,在ipython的命令行窗口下,按Tab强制提示时,会出现整数变量a的魔法方法__add__。__setitem__、__getitem__:使用索引方式对类实例进行赋值和获取操作时调用。1、类Test的__init__函数中存在2个属性赋值,__setattr__被调用2次。
2024-01-03 10:50:13
377
原创 Python基础进阶5:类方法的作用,你知道几个?
在OtherBook类中,定义了类方法create_book,有cls和title两个参数。在类的定义中,使用关键词@classmethod装饰的方法,称为类方法。类Book定义了一个类属性num,可以被不同的类实例所共享,即不管创建多少类实例,内存中始终只存在一个。类属性一般定义在类的顶部,与之相对应的实例属性一般定义在__init__构造函数中。如何使用:通过定义类属性,结合类方法,让类具有记忆能力(实例之间的数据共享)。这里通过类方法,得到了类实例的数目,这样就实现了类记忆能力。
2024-01-03 10:42:26
495
原创 Python基础进阶3:函数和方法不是一回事
2、对于类Test中的f01,属于属于实例方法,但不用调用方式得到不同结果,当实例调用时,2)对于类中的类方法,使用类调用时,Python解析器自动隐式传参,如下图所示。你好,我是kelly,今天分享的是Python的函数与方法的不同点。1)对于类中的实例方法,使用类调用时,必须显式将一个类实例传递进去。对于Python的函数和方法是不一样的,这一点需要注意下。1、限定是对于用户自定义类,可能是方法,具体看调用方式。2、不强调类和实例,只要是用户自定义的是函数。1、类中实例方法,可能是方法,也可能是函数。
2023-12-30 08:35:52
393
原创 Python基础进阶2:为什么open函数返回的文件对象是迭代器?
对于代码2的写法,很多人也知道文件对象f是个迭代器,使用for循环方式读取,可降低内存消耗。简单来说,任何实现了__iter__和__next__()方法的对象都是迭代器。可知,文件对象f包含方法__iter__和__next__,满足迭代器的定义。2、带参数时,即输入为object时,返回当前对象的属性、方法等。你好,我是kelly,今天分享一个简单但又不怎么让人关注的细节。代码1是一次性读取全部数据,代码2是增量式、每次读取一行数据。因此,使用dir函数读取文件对象f的内置属性。
2023-12-29 14:55:06
412
原创 从0到1实现pdf转图片,带界面软件(含Python源码,千字长文讲解)
pyinstaller为第三方库,它能够在Windows、Linux、 Mac OS X 等系统下将Python源文件打包,通过对源文件打包,独立软件可以在没有安装Python的环境中运行。涉及到pdf转图片、Python源码打包为EXE可执行文件,用到下面4个第三方Python包,其中前3个和pdf转图片有关,第4个和Python源码打包有关。首先创建一个tkinter()实例,继续设置界面的标题Title,界面的尺寸,是否支持缩放等。整个界面的布局思路,大体是实例化各个控件,并确定各个控件的摆放位置。
2023-12-29 14:51:12
1032
原创 Python基础进阶:9个易错知识点
如果想要新变量的值不受赋值前的原变量的影响,需要对原变量执行深拷贝,这样可以创建一个完全新的变量,新变量会对原变量内部的对象进行级联拷贝。对于这种情况,可变参数的机制允许函数调用时接受可变数量的参数。在函数定义中,*args表示可以接受任意数量的位置参数,使用时将传入的位置参数打包成一个元组赋值给args。变量赋值基础:变量A赋值给变量B,只是将变量A的引用给了变量B,并没有将变量A的值真正给变量B。f(*x):x一般为序列,调用时会按照函数f的参数顺序,将序列x元素依次赋值给函数f的各个参数。
2023-12-29 14:41:50
858
原创 pyshp+shapely,两个分析地理空间数据的Python库
Shapefile文件是美国环境系统研究所公司(ESRI)在1998年作为一种开放规范发布的矢量数据格式,已成为GIS数据的一种标准,目前几乎所有的地理空间分析软件都支持Shapefile文件。地理空间数据为矢量格式,一般存储为Shapefile文件,Shapefile文件属于一种矢量图形格式,能够保存几何图形的位置及相关属性。Shapefile文件是一种文件存储方法,实际包括多个文件,其中最重要文件包含.shp,.shx,.dbf、.prj文件等。.dbf文件:数据库文件,存储每个几何形状的属性数据。
2023-12-29 14:32:49
550
原创 内存不足时,Python读取大文件(4g内存读写12g文件)
迭代器在运行过程中,仅仅存储当前迭代数据,不将全部数据都缓存在内存,访问大量数据时非常节约内存。所创建的fr对象是一个迭代器,使用fr.readlines()操作会将csv全部数据一次性读入(缓存)内存,而直接对fr执行for循环,每次仅仅读取csv文件的一条数据。使用Python将数据写入文件时,数据不会立即写入文件,通常会先存放在缓冲区(Python内部创建),减少访问磁盘的次数(磁盘访问比较慢,导致程序运行变慢)。2、匹配结果写入文件时:每隔固定时间将数据写入磁盘,防止大量数据缓存在内存。
2023-12-29 14:28:45
1049
原创 Pillow和OpenCV的Python图像处理库你都用过了吗?
说到Pillow就不得不提到一个更早的Python图像库PIL(Python Imaging Library),PIL由于各种原因停止研发,Pillow作为PIL的派生分支、衍生品,功能更加强大,已经成为深度学习图像处理的标配之一。2、一般而言,使用2个元素的(x, y)元组表示坐标,使用4个元素的(x1, y1, x2, y2)元组表示矩形,其中(x1, y1)为矩阵的左上角,(x2, y2)为矩阵的右下角。1、Pillow使用笛卡尔像素坐标系统,图像的坐标原点(0,0)为左上角。
2023-12-29 14:24:29
621
原创 心血踩坑!Python保留指定位的小数
需求:假定有一个小数,记作abc.defghhijk,其中a、b、c、d、e等代表0-9之间的数字,比如值可以是3.1415926354975。1、前4个常见方法(round函数、字符串格式化、decimal模块、numpy.around函数)均会“舍入”处理,不满足要求“截断”目的。2、round函数、np.around,不仅会“舍入”操作,还会舍弃结果的末尾0。结果:会进行“舍入”处理,但当末尾为5时不进位,区别于rounding参数为ROUND_HALF_UP,末尾为5时会进位。
2023-12-29 14:08:49
589
原创 Python中__name__到底是什么?了解一下
在if __name__ == "__main__"语句中添加测试代码,对模块中各个函数进行测试。(2)模块aa.py被import导入时,__name__取值为aa(模块名字,不含.py后缀),aa.py会执行else语句。很多Python项目,在.py文件底部都有下面的代码块,Python初学者通常会好奇if语句中的__name__有什么作用。(1)模块aa.py作为主程序直接运行时,__name__的取值等于字符串"__main__",aa.py会执行if语句。创建2个py文件,其中aa.py文件。
2023-12-29 13:59:59
860
原创 Python闭包详解,你了解多少?
变量a指向inner_func函数,由于outer_func有2个参数:wieght和intercept,因此,inner_func函数作为闭包,属性__closure__包含2个元组,元组cell对象的cell_content属性分别取值100和10。闭包一旦创建,外部函数的变量会绑定在闭包上,即使外部函数运行结束后,外部函数的变量依然存在,闭包始终可以访问(甚至修改)。(2)拓展了外部函数的变量的作用域,将外部函数的变量缓存在内存中,其生存期不再受到外部函数的限制。
2023-12-28 09:19:15
1083
原创 Python实践——爬取百度图片
Xpath是XML路径语言,用于确定XML文档中的元素位置,通过元素路径对元素查找。Xpath Helper是Chrome浏览器的扩展插件,是一款免费的XPath工具,可以快速获取Html元素的Xpath表达式。Python能做的事情很多,爬虫是一个常见需求,可以自动从互联网爬取想要的图片。10、将Xpath Helper查询出的结果复制出来,单独放到一个txt文件中,作为爬虫的图片来源。本文只是介绍爬虫的一个简单案例,想要得到一个功能强大的应用还需要掌握各种爬虫技术,后面会不断介绍。
2023-12-28 09:07:11
1452
原创 MSE、OLS、MLE辨析和python实现
统计机器学习是一种基于统计理论的机器学习方法,理解MLE、OLS、MSE对于基本功非常重要。1、MSE、OLS、MLE的定义均方误差MSEMSE是Mean Squared Error缩写,一般用于衡量预测值和真实值之间的差异,属于一种具体的计算函数。普通最小二乘法OLSOrdinary Least Squares的缩写,一般用于线性模型,通过最小化数据集各个样本预测值和真实值之间的均方误差之和,来预估线性模型的参数,属于一种数学优化技术。极大似然估计MLE...
2021-05-18 22:25:17
5592
1
原创 高斯模糊原理和python实现
高斯模糊是一种常见的模糊技术,相关知识点有:高斯函数、二维卷积。(一)一维高斯分布函数一维(连续变量)高斯函数形式如下,高斯函数又称“正态分布函数”:μ是分布函数的均值(或者期望),sigma是标准差。一维高斯分布函数的图形:从图可知,以x=0为中心,x取值距离中心越近,概率密度函数值越大,距离中心越远,密度函数值越小。(二)二维高斯分布函数二维高斯分布函数的形式:特别说明,当变量x和y相互独立时,则相关系数ρ=0,二维高斯分布函数可以简化为...
2021-05-12 21:37:32
8685
16
原创 图像旋转python和numpy实现
给定一张图片,如何在不使用PIL、OpenCV这些库的情况下,单独使用Numpy库实现图片旋转。“talk is easy, show me the code!”常见旋转有:上下翻转、左右翻转、旋转180度、逆时针旋转90度、顺时针旋转90度。(1)上下翻转图片沿着图片中心的水平线,上下翻转,第一行调换到倒数第一行,第二行调换到倒数第二行,以此类推。python实现:# 上下翻转 = 颠倒各个行的顺序arr_up = arr[::-1, ...] # ...
2021-05-09 09:35:02
2418
原创 数学上的一维离散线性卷积原理和python实现
最近在研究卷积,发现深度学习中的卷积和数学中的卷积存在差异,这里记录下数学中的一维离散线性卷积。一、数学公式一维离散线性卷积的计算公式如下:(1)卷积运算满足交换律,即a和v的顺序可以颠倒。(2)计算时,v(m)先反转到v(-m),再平移到v(a-m)。二、numpy库convolve函数numpy.convolve(a, v, mode='full')假定序列a长度为N,序列b长度为M,则有 mode=full,则结果序列长度=N+M-1,包括重合的端点处..
2021-04-27 23:44:29
4078
6
原创 keras的binary_crossentropy的一个细节
二进制交叉熵是交叉熵的一种特殊情况,专门处理二分类问题。二进制交叉熵公式:假定样本预测值f(x)=a,当样本标签y=1,L=lnf(x),当y=0,L=ln(1-f(x))。Keras.losses.binary_crossentropy实现源码如下:主要注意的地方有以下几处:(1)keras自带的binary_crossentropy()函数对最后一个维度(last axis)求解mean。(2)后端tf函数binary_crossentropy()对预测值做了截断clip处理
2021-04-25 21:12:53
4404
1
原创 pycharm配置远程访问docker镜像环境
流程:步骤1:修改docker镜像中的ssh配置,允许外部访问。步骤2:pycharm创建ssh配置,以便能远程访问docker镜像。步骤3:pycharm进行deployment配置,将本地项目部署到docker的自动挂载目录。步骤4:pycharm添加docker镜像的python环境。步骤1: 1. 启动镜像的时候宿主机端口映射到容器端口22: -p 6029:22 2. 进入容器修改root密码: passwd 3. 安装ssh工具: apt-get...
2021-04-08 18:54:30
1297
2
原创 图像风格迁移总结
图像分割迁移总体上分类2大类:基于优化的方法和基于decoder的方法。下面按照发展阶段梳理:文理合成的第一篇论文《Texture Synthesis by Non-parametric Sampling》非参数化的暴力求解法-------------------------------------------------------------------------------------------《Image style transfer using convolutional ne
2021-03-29 09:08:58
3466
1
原创 EM算法
用途:求解含有因变量的问题,但模型结构需要先知道。方法:最大化完全数据(可观测数据+不可观测)的期望;第1步(E步):先假定一个模型初始参数,求完全数据的期望等价于求因变量参数值;第2步(M步):因变量确定之后,问题转化为极大似然估计问题,最大化完全数据的期望,即更新模型参数。使用到的关键工具:Jensen不等式假定函数f(x)是下凹函数,,则有:否则f(x)是上凸函数,则有:实际计算步骤E步(已知theta求z)根据theta的初值,计算各个样本j对于..
2021-03-04 15:31:17
439
1
原创 hmm的预测(解码)问题和python实现
hmm的解码问题:给定训练好的hmm模型,预测给定观测序列对应的最佳隐状态序列。两种方法:(1)近似算法(2)viterbi维特比算法近似算法摘自李航《统计学习方法》缺点:无法保证所求的状态序列一定有意义和最佳,只能保证当前时刻t选择是状态是最佳的。viterbi维特比算法核心思想:动态规划机制,从前向后,在每个时间步t仅选择当前状态下的最佳路径,剔除非最佳路径。viterbi的实现代码:import timeimport numpy as np..
2021-03-01 21:43:11
1820
1
原创 hmm的概率计算问题和python实现
概率计算问题/评估问题前向算法摘自李航老师《统计学习方法》后向算法摘自李航老师《统计学习方法》完成的python代码transition_prob = np.array([[0.7, 0.3], [0.4, 0.6] ])emission_prob = np.array([[0.1, 0.3, 0.6], ..
2021-03-01 14:45:27
462
2
原创 python中__init__文件的作用
目的:控制包的导入行为简单来说:python程序运行时,__init__.py文件会将当前目录(文件夹)激活为module(模块包),其他模块引用此package模块时时会自动加载运行该__init__.py文件,这样开发人员可以在__init__.py中做一些初始化操作。目录中的__init__.py文件作用:将当前整个文件夹当作一个包来管理,每当有外部import的时候,就会自动执行里面的函数。(1)标识该目录是一个python的模块包(2)简化模块导入操作(3)功能的封装和细节隐藏对
2021-02-24 11:49:00
3717
1
原创 “python -m 模块名“的理解
引言:# 脚本方式执行python run.py# 模块方式执行python -m run(1)"python --help"中的定义-m mod : run library module as a script (terminates option list)以脚本方式运行Python模块(把python模块当做script方式执行,python文件=python模块名+".py")python官网中的示例:python -m http.server 8000pytho
2021-02-23 17:28:48
408
1
原创 win10 powershell无法激活python虚拟环境
步骤1:管理员权限打开powershell步骤2:输入Set-ExecutionPolicy RemoteSigned,确认“Y”步骤3:切换到虚拟环境的Scripts目录,执行命令:“.\activate”说明:使用时发现workon命令可以查看虚拟环境列表,但无法通过workon激活环境,需要手动切换到虚拟环境安装目录,执行activate命令手动激活。-- over --...
2021-02-23 10:42:17
3115
1
原创 傅里叶变换的几个概念
时域和频域卷积定理:提供了时域和频域的转换方式,卷积是一种复杂运算,在一个域的卷积转为另一个域的乘法,简化运算。什么是卷积:时不变系统在t时刻的输出,和t时刻之前的历史输入s(s<t)有关,且各个历史时刻s输入对t时刻输出的影响力衰减。傅里叶变换相关的几种变换的关系:FT、DTFT、DFT、FFT、IDFT、DFS。FT作用于模拟信号(连续信号)DTFT作用于离散信号(采样于模拟信号),输出仍是连续DFT作用于离散信号,但输出是离散,即输入和输出都是离散的,适合..
2021-02-18 15:33:08
563
2
原创 “ModuleNotFoundError: No module named ****“问题分析和解决思路
"ModuleNotFoundError: No module named ****"问题分析和解决思路这个问题比较常见,根据经验主要分为两种:情况1:"****"这个package是否在真的存在,pycharm做远程deployment时候,用户经常会在远程服务器漏掉某些文件和目录,导致目录不存在。解决办法:直接upload本地目录和文件到服务器就行了情况2:"****"这个package是存在的,这时问题继续分为2种情况情况2.1:使用pycharm,右击指定包目录"Make Direct
2020-10-21 21:41:28
13365
原创 numpy-repeat
repeat是一个常用函数,比如维持深度学习中不同矩阵的维度一致,或者基于低维的矩阵得到一个更高维度的矩阵作为初始矩阵等等。作用:沿着指定轴(axis),对矩阵的元素项(单个数值、行向量、列向量,三者之一)进行依次重复。效果:维度数目ndim不变,但各个维度的大小改变。参数说明:repeats 每个元素项的复制次数,单个整数或者整数列表,可以根据指定axis,动态broadcast到合适shape。 axis 指定哪个轴进行repeat,默认None时repeat会先flat
2020-08-14 20:16:28
1230
1
原创 Keras中LSTM使用过程中的几个易混点
现在dl学习的过程已经越来越简单的了,尽管很多时候真的只是调用API即可,但遇到需要定制的需求,这时候就需要清晰理解各个注意点,这里记录下LSTM API使用中的几处笔记。1、LSTMCell类和LSTM类的区别解答:LSTMCell类是对LSTM单个计算单元的完整封装,里面包含了各个计算步骤的详细过程,在LSTM层中用作实际计算单元。而LSTM类是抽象类RNN的子类,通过实例化LSTMCell来完成LSTM的计算。简单来说,LSTMCell类是LSTM的“心”,而LSTM类是LSTM的“壳”(比喻
2020-07-19 17:24:21
2481
1
原创 思考:A卡评分卡
有3种评分卡:A卡:申请评分卡,位于贷前,预测客户带来的违约风险,相当于用老客户数据预测新客户的模式(bb说)。B卡:行为评分卡,位于贷中,预测客户开户后违约欠款的风险,相当于对借贷期间的风险进行监控(bb说的)。C卡:催收评分卡,位于贷后,对逾期客户预测催收策略反应的概率。申请评分卡一般是预测一个客户是好客户or坏客户,这是一个二分类问题。但实际建模之后,还需要看风险表现,包括逾期天数和逾期金额,会期望低分段客户有更高的逾期天数和更大的逾期金额,从这个角度看,这似乎不是一个二分类可以.
2020-05-09 23:04:01
675
免费的pdf转图片软件
2023-12-28
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人