python
文章平均质量分 92
artzers
这个作者很懒,什么都没留下…
展开
-
【机器学习】Torchvision生成拼接图像
Pytorch组件torchvision可以将 N×D×H×WN \times D \times H \times WN×D×H×W生成 一块拼接图像,其API描述如下:torchvision.utils.make_grid(tensor, nrow=8, padding=2, normalize=False, range=None, scale_each=False, pad_value=0)...原创 2020-02-04 22:46:09 · 1837 阅读 · 0 评论 -
【图像处理】线性、位置不变退化图像的频域复原基础(维纳滤波,最小均方滤波,几何滤波)
【图像处理】线性、位置不变退化图像的复原基础(维纳滤波,最小均方滤波,几何滤波)原创 2016-05-19 17:15:19 · 4033 阅读 · 0 评论 -
【机器学习】tensorflow: GPU求解带核函数的SVM二分类支持向量机
SVM本身是一个最优化问题,因此理所当然可以用简单的最优化方法来求解,比如SGD。2007年pegasos就发表了一篇文章讲述简单的求解SVM最优化的问题。其求解形式简单,但是并没有解决核函数计算量巨大的问题。这里给出了一个tensorflow的带核函数的SVM的解法,使用GPU加速,并且支持在线学习。原创 2017-02-16 10:11:50 · 10604 阅读 · 11 评论 -
【机器学习】Tensorflow:tSNE数据非线性降维
深度学习巨头之一的Hinton大神在数据降维领域有一篇经典论文Visualizing Data using t-SNE。该方法是流形(非线性)数据降维的经典,从发表至今鲜有新的降维方法能全面超越。该方法缺点是计算复杂度大,一般推荐先线性降维然后再用tSNE降维。python sklearn有相应的实现。我现在用Tensorflow实现这个算法。原创 2017-03-01 00:57:37 · 16792 阅读 · 2 评论 -
【机器学习】tensorflow:HMM隐状态链的一种最优化求解方法
隐马尔科夫模型(HMM)有很多讲解,这里我推荐这篇文章:一文搞懂HMM(隐马尔可夫模型)。HMM有三种核心问题:1、给定隐状态链、转移矩阵、发射矩阵,求状态链发生概率2、给定状态链求转移矩阵和发射矩阵3、给定状态链、转移矩阵、发射矩阵,求隐状态链。三类问题分别对应前向-后向算法、最大熵算法、维特比算法。鉴于第三类问题本质上是优化问题,所以我尝试用tensorflow进行求解。原创 2017-02-21 10:27:34 · 6727 阅读 · 0 评论 -
【机器学习】tensorflow: 稀疏自编码
21世纪之后,数学家证明了我们获取的很多数据,可以分解为空间中少数几个基的组合,且组合系数很多为0;亦或者说,大部分数据的主要内容可以由少数几个空间基组成。这就是数据的稀疏特征,是压缩感知的基础。基于这个原理诞生了数据压缩方法,检测方法。这些方法很多都基于最优化理论,在大数据处理上,相比传统的方法,比如PCA,在计算复杂度上有很大的提升。稀疏自编码是其中一种数据压缩方法。 稀疏编码的公式为:arg原创 2017-02-14 11:01:24 · 3550 阅读 · 0 评论 -
【机器学习】Tensorflow:理解和实现快速风格化图像fast neural style
Neural Style开辟了计算机与艺术的道路,可以将照片风格化为名家大师的画风。然而这种方法即使使用GPU也要花上几十分钟。Fast Neural Style则启用另外一种思路来快速构建风格化图像,在笔记本CPU上十几秒就可以风格化一张图片。我们来看看这是什么原理。原创 2017-02-23 11:20:18 · 16478 阅读 · 13 评论 -
【图像处理】时域最小二乘逆滤波的最优化快速解法
上一篇文章,我的空间域最小二乘逆滤波的时间、空间复杂度都非常高。其中求逆矩阵是消耗巨大的一步,这里用迭代优化解法展示了如何不用求逆矩阵来求解最小二乘逆滤波。 首先卷积图像的生成表示为AXravel+Nravel=BravelAX_{ravel}+N_{ravel}=B_{ravel},我们将问题转化为一个简单的带正则化的优化问题J(Xravel)=argmin12(AXravel−Bravel)2原创 2017-02-09 19:51:25 · 1960 阅读 · 0 评论 -
【图像处理】时域最小二乘逆滤波
空间域上,可以和频域一样进行卷积逆滤波操作。其方法是展开图像为一列,构建卷积模板矩阵,这样卷积操作就变成了矩阵乘法。我们可以用最小二乘法来,已知卷积图像和卷积模板来求出原始图像。空间域最小二乘逆滤波是病态问题,缺点是卷积矩阵非常稀疏和巨大,模非常小,一般需要进行约束。原创 2017-02-09 11:24:47 · 1797 阅读 · 0 评论 -
【机器学习】tensorflow:图像空间域逆滤波初步
相比上两篇文章的逆滤波解法,tensorflow的最优化解法更加高效、简明,往往构建出滤波最优化公式就可以让tensorflow自动最优化,逆向得到目标逆滤波图像。tensorflow逆滤波的实现原理可以参考【图像处理】时域最小二乘逆滤波的最优化快速解法with tf.device('/gpu:0'): initial = tf.random_normal([1,252,252,1]) *原创 2017-02-14 09:38:37 · 3867 阅读 · 0 评论 -
【图像处理】Tensorflow:简易超分辨重建与坑
超分辨重建是图像复原领域的一大热点,能在硬件有限的情况下最大还原原始场景的信号,在天文探索、显微成像等领域有重要作用。成像设备对物体成像时,由于距离较远,成像会模糊,可以类比多尺度高斯滤波;受限于成像机能,成像像素达不到最理想条件,可类比为对原始像进行一个下采样。超分辨重建就是要在这种条件下复原原始图像。原创 2017-03-31 10:32:55 · 8378 阅读 · 0 评论 -
【C++】C++对象内存模型简介
C++相比C,增加了class类特性,用于封装数据和方法。C和C++都有struct结构体。C中的struct纯粹是数据和函数的集合。而C++中的struct则相当于另外一类class,与class的区别是,class如果没有关键字,默认成员为私有,struct则默认为公有;如果显式指定私有公有等关键字,则C++的struct和class几乎没有区别。我们来看看C++如何将数据和方法封装在一起。原创 2016-04-18 20:21:26 · 629 阅读 · 0 评论 -
【机器学习】Tensorflow概率编程:线性混合模型
线性模型是我们最常见到的、最理想的数学模型,基本的线性模型是数据科学入门的基本案例。然而现实生活中的线性问题,很大几率不适用于基本的线性模型,需要使用线性混合模型来描述。Tensorflow edward提供对这类问题的解决方案。原创 2017-07-06 17:38:49 · 3147 阅读 · 0 评论 -
【机器学习】C++调用Python3教程
背景 实际项目中我用的都是C++语言,因为涉及到高性能计算,所以其他听起来牛逼的语言只能用来打下手。现在遇到的一个项目,其深度学习模块是用python语言编写的,现在很多深度学习库都提供了python支持,但是很少有C++支持,就算有C++支持,在windows上编译也有一大堆问题(你说普通人会用Linux?)。幸好python是所谓的胶水语言,能够和C++兼容工作,所以就着手试验C++调用...原创 2018-04-20 13:35:54 · 3134 阅读 · 1 评论 -
【机器学习】C++与OpenCV、Tensorflow-python联合调用
上一篇我介绍了C++调用Python的入门方法。这一篇我讲述C++与OpenCV、Tensorflow-python联合调用的一次成功的实验过程。 C++通过python调用tensorflow,比调用C++版本的tensorflow的优势在于:tensorflow环境依赖python环境,python环境几乎是一键傻瓜式操作,各种库依赖的问题,比直接使用tensorflow-C++少得...原创 2018-04-20 21:43:27 · 4170 阅读 · 1 评论 -
【机器学习】Pytorch多GPU训练的CUDA错误
最近用pytorch进行多GPU训练,遇到一个问题,现记录一下问题详情和解决方法。我用windows pytorch跑的,单个网络占据约4G显存,显卡约11G显存,一个显卡只能跑两个sample。当我batch_size设置为2,GPU设置为两块时,每个GPU显存绰绰有余,跑起来没啥问题。当batch_size设置为4,每个GPU跑两个sample,显存占据约8G,时不时遇到一个错误然后就退出了...原创 2019-03-30 11:07:47 · 2488 阅读 · 6 评论 -
【机器学习】动手写一个全连接神经网络(三):分类
我们来用python写一个没有正则化的分类神经网络。 传统的分类方法有聚类,LR逻辑回归,传统SVM,LSSVM等。其中LR和svm都是二分类器,可以将多个LR或者svm组合起来,做成多分类器。 多分类神经网络使用softmax+cross entropy组成最终的多分类代价函数J。为什么要用这个代价函数,可能需要广义线性模型的知识。简单来说就是最大化分类函数的熵。原创 2017-01-12 10:46:34 · 2279 阅读 · 0 评论 -
【机器学习】动手写一个全连接神经网络(二):线性回归
我们来用python写一个没有正则化的双隐藏层线性回归神经网络。原创 2017-01-11 00:34:17 · 1659 阅读 · 0 评论 -
生成python程序的exe文件
生成python程序的exe文件 在不安装python运行环境的情况下,用py2exe生成python程序的exe文件是最优选择。原创 2016-05-26 15:56:34 · 4825 阅读 · 0 评论 -
python爬取百度搜索动态网页
简单的网络爬虫无法获取动态网页的真实内容,纯技术分析动态页面又过于复杂。web自动化测试工具selenium可以启动浏览器,模拟人的行为去打开网页并获取正确的动态页面信息,是简单可行的一种动态网络爬取方法原创 2016-02-25 22:09:04 · 5846 阅读 · 2 评论 -
【图像处理】常见图像噪声模型和生成方法
常见的噪声模型有(z是噪声值,μ表示均值,s2表示方差):1、高斯噪声2、瑞里噪声μ=a+sqrt(pi*b/4),s2=b(4-pi)/43、伽马噪声 μ=b/a,s2=b/a^24、指数分布噪声 μ=1/a,s2=1/a^25、均匀分布噪声 μ=(a+b)/2,s2=(b-a)^2/126、椒盐噪声其中盐表示亮点,椒表示暗点。7、周期噪声,比如空间域图像受到正弦波信原创 2016-05-07 20:15:59 · 18853 阅读 · 3 评论 -
【图像处理】图像频域基础
一般我们看到的图像可以表示为函数f(x,y),x和y是空间上的坐标,此时的图像称为空间域图像;经过频域变换后的图像称为频域图像。离散情况下,一维傅里叶变换有如下形式。同时这里还证明了,对原始数据乘以(-1)^x之后,频域结果被中心化。在二维情况下,则有因为图像处理中一般有M=N,所以有 我们对一幅图像每个像素点(x,y)乘以(-1)^(x+y),然后进行FFT,原创 2016-05-06 10:08:43 · 5644 阅读 · 0 评论 -
【机器学习】最速下降法和牛顿下降法
入门教材常用二分法来求解实数求根的问题。我们现在来用普通迭代法、下降法来求解实数开立方根的问题。设当前实数为n,求根次数为k,根为s,那么有s^k=n。所得偏差函数为f(s)=s^k-n。显然当代价函数f(s)->0时,我们便求出了n的k次根。现在我们开立方根,那么k=3,代价函数为f(s)=s^3-n。原创 2016-05-04 20:18:49 · 2572 阅读 · 0 评论 -
【图像处理】基本的全局图像灰度变换
二维图像可以看做坐标点(x,y)的函数,f(x,y),因变量为像素值。设r是当前点,s是灰度变换后的点,那么有s=T(r),T是一个函数,r和s都属于一定范围内的自然数集合。因此我们可以根据函数T建立一个数组,下标是r,元素是s,遍历每个待变换的像素点,用查表的方法替换r为s,快速完成灰度变换。常用的灰度变换有:1、 对数变换,s=cLog(1+r),其中c是归一化参数,对数的底是可以变原创 2016-04-22 12:36:24 · 3757 阅读 · 0 评论 -
【机器学习】贝叶斯线性回归模型
假设当前数据为X,回归参数为W,结果为B,那么根据贝叶斯公式,可以得到后验概率:,我们的目标是让后验概率最大化。其中pD概率是从已知数据中获取的量,视为常量;pw函数是w分布的先验信息。令: 求l函数最大化的过程称为w的极大似然估计(ML),求pie函数最小化的过程称为最大后验估计(MAP)。ML没有利用w的先验信息,因此结果不如MAP好。MAP和ML计算得到的W 的结果可能不原创 2016-04-21 20:18:43 · 9613 阅读 · 3 评论 -
【机器学习】最近邻策略:k-means和KNN
假设我们已经利用一堆样本{(x,y)}进行了训练,得到了k个分类和k个分类的重心,那么对于待测数据x’,计算x’到k个分类重心的距离,距离最近的分类y‘即为x’的分类。这是最近邻策略的基本思路,从中衍生了k-means和KNN方法。如何度量距离是一个复杂的问题,一般情况下我们习惯使用欧氏距离来表征分类距离。如果我们要调整n个分类特征的权重,可以修改距离度量的定义;可以将n个分类特征变为特征的函数f原创 2016-03-23 00:01:07 · 3935 阅读 · 0 评论 -
【高性能】配置python版本的MPI
安装:首先下载MPI for python 的源码包:mpi4py解压,进入文件夹,编辑mpi.cfg:# Default configuration# ---------------------[mpi] mpi_dir = /usr/local/openmpi#自己的mpi位置,openmpi和mpich均可mpicc原创 2016-03-11 20:23:20 · 3231 阅读 · 0 评论 -
【综合算法】A*算法
A*算法 A*算法;A*(A-Star)算法是一种静态路网中求解最短路径最有效的直接搜索方法,也是许多其他问题的常用启发式算法。注意是最有效的直接搜索算法。之后涌现了很多预处理算法(ALT,CH,HL等等),在线查询效率是A*算法的数千甚至上万倍。原创 2016-06-22 15:58:15 · 3764 阅读 · 0 评论 -
【机器学习】windows GPU版keras神经网络库编译
theano、caffe和tensorflow是python上主流的机器学习库。keras是对theano/tensorflow的高级封装,由于tensorflow不支持windows,因此windows上keras只能使用theano作为底层。建议在windows上安装anaconda。原创 2016-07-23 17:00:27 · 2445 阅读 · 0 评论 -
【图像处理】空间域上的图像增强(sobel,LOG,DOG算子等)
空间域与傅里叶变化后的频域相对,是在实际的图像坐标空间中进行变换。在傅里叶变换中有f(x,y)F(u,v),前者位于空间域,后者位于频域。一、全局图像增强,比如灰度变换和直方图调整。二、局部增强,对特定区域进行调整。三、分块增强,将图像分块,计算每一个块的特征,比如平均值、方差等,根据这些特征,判断当前块是否调整。这里可以用到机器学习的方法。四、算术/逻辑增强,设有图像f(x,y)原创 2016-04-25 18:33:11 · 7593 阅读 · 0 评论 -
【机器学习】windows版caffe深度学习库编译
caffe主要版本是基于Linux的,其Windows版本是由微软提交维护的。编译caffe的最低要求VS版本为2013,一开始让我很诧异,难道微软要用什么黑科技么?这让软件开发和推广很有难度啊。不多说了,先git clone下来再编译。原创 2016-07-23 09:17:35 · 1479 阅读 · 0 评论 -
【机器学习】caffe:solver、train、val、deploy配置和线性回归神经网络
简单的线性回归是回归理论的入门基础。简单线性回归的公式为y=wTx+by=w^Tx+b,其中y、w、x均为多维向量数据。求解线性回归,就是在已知y和x的情况下,求解参数wTw^T和b。现在我用python版本的caffe,构建一个神经网络来拟合上述简单的线性回归。原创 2016-10-15 00:35:30 · 2973 阅读 · 0 评论 -
【数据挖掘】利用md5查找重复文件
【数据挖掘】利用md5查找重复文件 电脑经过长时间的使用,难免会存留许多重复文件。这些重复文件往往四散在各处,其文件名、修改时间等信息都有改动,这对我清理重复文件造成了困扰。尽管重复文件已经有了诸多修改,但是这些修改仅仅作用于文件头,真正的文件数据没有修改过,因此我可以通过比较磁盘上的文件的文件数据的md5摘要信息,来找到重复的文件。原创 2016-05-26 14:08:50 · 7515 阅读 · 0 评论