模式识别与机器学习
文章平均质量分 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 评论 -
【机器学习】Tensorflow:理解和实现快速风格化图像fast neural style
Neural Style开辟了计算机与艺术的道路,可以将照片风格化为名家大师的画风。然而这种方法即使使用GPU也要花上几十分钟。Fast Neural Style则启用另外一种思路来快速构建风格化图像,在笔记本CPU上十几秒就可以风格化一张图片。我们来看看这是什么原理。原创 2017-02-23 11:20:18 · 16479 阅读 · 13 评论 -
【机器学习】tensorflow: 稀疏自编码
21世纪之后,数学家证明了我们获取的很多数据,可以分解为空间中少数几个基的组合,且组合系数很多为0;亦或者说,大部分数据的主要内容可以由少数几个空间基组成。这就是数据的稀疏特征,是压缩感知的基础。基于这个原理诞生了数据压缩方法,检测方法。这些方法很多都基于最优化理论,在大数据处理上,相比传统的方法,比如PCA,在计算复杂度上有很大的提升。稀疏自编码是其中一种数据压缩方法。 稀疏编码的公式为:arg原创 2017-02-14 11:01:24 · 3550 阅读 · 0 评论 -
【机器学习】tensorflow:HMM隐状态链的一种最优化求解方法
隐马尔科夫模型(HMM)有很多讲解,这里我推荐这篇文章:一文搞懂HMM(隐马尔可夫模型)。HMM有三种核心问题:1、给定隐状态链、转移矩阵、发射矩阵,求状态链发生概率2、给定状态链求转移矩阵和发射矩阵3、给定状态链、转移矩阵、发射矩阵,求隐状态链。三类问题分别对应前向-后向算法、最大熵算法、维特比算法。鉴于第三类问题本质上是优化问题,所以我尝试用tensorflow进行求解。原创 2017-02-21 10:27:34 · 6727 阅读 · 0 评论 -
【机器学习】Tensorflow:tSNE数据非线性降维
深度学习巨头之一的Hinton大神在数据降维领域有一篇经典论文Visualizing Data using t-SNE。该方法是流形(非线性)数据降维的经典,从发表至今鲜有新的降维方法能全面超越。该方法缺点是计算复杂度大,一般推荐先线性降维然后再用tSNE降维。python sklearn有相应的实现。我现在用Tensorflow实现这个算法。原创 2017-03-01 00:57:37 · 16792 阅读 · 2 评论 -
【机器学习】tensorflow: GPU求解带核函数的SVM二分类支持向量机
SVM本身是一个最优化问题,因此理所当然可以用简单的最优化方法来求解,比如SGD。2007年pegasos就发表了一篇文章讲述简单的求解SVM最优化的问题。其求解形式简单,但是并没有解决核函数计算量巨大的问题。这里给出了一个tensorflow的带核函数的SVM的解法,使用GPU加速,并且支持在线学习。原创 2017-02-16 10:11:50 · 10604 阅读 · 11 评论 -
【机器学习】SVR支持向量机回归
回归和分类从某种意义上讲,本质上是一回事。SVM分类,就是找到一个平面,让两个分类集合的支持向量或者所有的数据(LSSVM)离分类平面最远;SVR回归,就是找到一个回归平面,让一个集合的所有数据到该平面的距离最近。 我们来推导一下SVR。根据支持向量机二分类博客所述,数据集合归一化后,某个元素到回归平面的距离为r=d(x)−g(x)r=d(x)-g(x)。另外,由于数据不可能都在回归平面上,原创 2016-09-02 11:28:25 · 47777 阅读 · 15 评论 -
【机器学习】SVM核函数的计算
SVM复杂核函数,实际工程上不能拆分为向量內积,于是不能求解w的确切值,需要从核函数SVM的定义上求解SVM.原创 2016-12-09 01:54:10 · 3824 阅读 · 0 评论 -
【机器学习】线性回归
假设我们有许多样本数据{x(i),y(i)},其中x(i)是第i个样本变量,y(i)是第i个变量的类别,对于每个样本变量都有许多特征feature(x)=X=x1,x2,…xnfeature(x)=X={x_1,x_2,…x_n},现在我们建立判别函数hθ(x)=θ1x1+…θnxnh_{\theta}(x)=\theta_1x_1+…\theta_nx_n,线性回归的目标是找到判别函数的最佳系数,原创 2017-01-11 00:51:52 · 631 阅读 · 0 评论 -
【机器学习】动手写一个全连接神经网络(三):分类
我们来用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 评论 -
【机器学习】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 评论 -
【机器学习】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 评论 -
【机器学习】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 评论 -
【机器学习】C++调用Python3教程
背景 实际项目中我用的都是C++语言,因为涉及到高性能计算,所以其他听起来牛逼的语言只能用来打下手。现在遇到的一个项目,其深度学习模块是用python语言编写的,现在很多深度学习库都提供了python支持,但是很少有C++支持,就算有C++支持,在windows上编译也有一大堆问题(你说普通人会用Linux?)。幸好python是所谓的胶水语言,能够和C++兼容工作,所以就着手试验C++调用...原创 2018-04-20 13:35:54 · 3134 阅读 · 1 评论 -
【机器学习】高斯分布为什么普遍和常用?
似然函数到高斯分布为了得到精确值,我们需要进行多次测量,测量值大部分对称分布在真实值两侧附近。设测量期望为θ\theta,误差为ei=xi−θe_i=x_i-\theta,期望为0,误差分布满足什么规律呢?原创 2017-12-26 20:41:29 · 20323 阅读 · 3 评论 -
【机器学习】Bregman分离算法推导
Bregman分离算法比Bregman迭代算法更简单、更有效。原创 2017-05-20 11:49:07 · 3022 阅读 · 0 评论 -
【机器学习】Tensorflow概率编程:线性混合模型
线性模型是我们最常见到的、最理想的数学模型,基本的线性模型是数据科学入门的基本案例。然而现实生活中的线性问题,很大几率不适用于基本的线性模型,需要使用线性混合模型来描述。Tensorflow edward提供对这类问题的解决方案。原创 2017-07-06 17:38:49 · 3147 阅读 · 0 评论 -
【机器学习】Tensorflow:概率编程初步印象
谷歌对Tensorflow的定位是机器学习库而不仅仅是深度学习库。随着Edward项目的开展,Tensorflow涉足了概率编程领域,与stan、pymc展开了竞争,大大扩展了应用范围。现在来看看基于Tensorflow的概率编程的一些初步知识笔记。原创 2017-06-21 23:50:30 · 1812 阅读 · 0 评论 -
【机器学习】Tensorflow概率编程: 贝叶斯线性回归、变分贝叶斯与黑盒变分推断
我们首先看看Tensorflow概率编程最简单的实例:贝叶斯线性回归。 以及背后的数学知识:变分贝叶斯和黑盒推断。原创 2017-06-30 23:46:37 · 6969 阅读 · 2 评论 -
【机器学习】Bregman迭代算法以及证明
Bregman系列算法是近几年在图像处理和压缩感知领域异军突起的算法,能够更好地从现有数据中还原真实目标结果。原创 2017-05-06 01:14:40 · 7394 阅读 · 2 评论 -
【机器学习】动手写一个全连接神经网络(一)
反向传播神经网络推导中给出了复杂的BP公式。从头看这篇多年的博客的公式,我都有点被绕晕了。现在在这里我可以从矩阵计算的角度去演示一个全连接神经网络的计算过程,这样更简洁明了。原创 2016-12-21 22:23:21 · 8660 阅读 · 2 评论 -
【机器学习】C++版本libSVM的使用和非线性核函数分类代码
libSVM是台湾大学林智仁(Lin Chih-Jen)教授等开发的一个简单易用、快速有效的SVM模式识别与回归的第三方库。该库无需额外的第三方库支持,只需要纯粹的C++编译运行环境,可以横跨Windows\Linux\Unix等平台。原创 2016-09-01 20:23:18 · 2591 阅读 · 3 评论 -
【机器学习】OSX 下配置pycaffe的问题和解决方法
首先这不是osx下caffe的安装教程,请移步官网: http://caffe.berkeleyvision.org/installation.html http://caffe.berkeleyvision.org/install_osx.html 遵照官网步骤之后仍然会有问题,问题和解决方法如下:原创 2016-10-08 10:47:52 · 2514 阅读 · 0 评论 -
【机器学习】逻辑回归
逻辑回归和线性回归同属于广义线性回归,逻辑回归更倾向于实现二分类的分类器/判别函数。和线性回归一样,逻辑回归需要找到一个判别函数原型,要求判别函数需要满足某些最优化条件,从而求得判别函数。在二分类中,样本变量x对应一个分类y,y只有是或者不是两种类别,可以用1类和0类来表示。对应数理统计知识,样本是随机变量,那么总体的分布就是二项分布。我们希望最终能够把判别函数的结果映射到一个值域在[0,1]原创 2016-03-21 01:10:15 · 622 阅读 · 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 评论 -
VNC和CUDA安装冲突
我平时使用vnc来管理远程工作站和HPC。 最近我要安装CUDA7.5,安装之后,电脑黑屏了!于是我重启,还好电脑正常,但是CUDA就只安装了一半,既用不了也不能卸载,卸载会出错。于是我用控制面板的卸载程序功能强行删除了CUDA,然后升级NVIDIA驱动。 安装驱动之后,进入系统,系统分辨率只有640*480……,然后我换了旧版本的驱动安装,安装程序提示无法找到兼容的显卡。我去计算机管理-设备管原创 2016-07-22 20:56:34 · 1485 阅读 · 0 评论 -
【机器学习】最近邻策略: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 评论 -
【机器学习】朴素贝叶斯分类
一、分类的数学定义:从数学角度来说,分类问题可做如下定义: 已知集合:和,确定映射规则,使得任意有且仅有一个使得成立。(不考虑模糊数学里的模糊集情况)。 其中C叫做类别集合,其中每一个元素是一个类别,而I叫做项集合,其中每一个元素是一个待分类项,f叫做分类器。分类算法的任务就是构造分类器f。 二、贝叶斯统计基础:原创 2016-03-31 15:51:19 · 914 阅读 · 0 评论 -
【机器学习】简单感知器
简单感知器由一个线性组合器和硬限幅器(即sgn函数,判断是正数返回1,负数返回-1)组成,线性组合器有m个输入,m个输入权值,一个偏置,图像表述如下:(Simson Haykin)用数学方法表述就是y=∑wixi+b,i=1,2,3…m,如果sgn(y)=+1,则分为第一类,否则分为第二类。感知器一般只做出两类判别。上述表达式可以简写为y=∑wixi,i=1,2,3…m+1,其中w原创 2016-04-11 12:17:17 · 1464 阅读 · 0 评论 -
【机器学习】机器学习常见算法分类汇总
转自http://www.ctocio.com/hotnews/15919.html,尊重原创机器学习无疑是当前数据分析领域的一个热点内容。很多人在平时的工作中都或多或少会用到机器学习的算法。这里IT经理网为您总结一下常见的机器学习算法,以供您在工作和学习中参考。机器学习的算法很多。很多时候困惑人们都是,很多算法是一类算法,而有些算法又是从其他算法中延伸出来的。这里,我们从转载 2016-04-11 12:20:58 · 566 阅读 · 0 评论 -
【机器学习】多元高斯分布下的贝叶斯分类感知器
先来来看看随机连续分布下贝叶斯分类器模型。假设当前要使用贝叶斯分类器进行二分类的判别,数据集有随机分布,图像如下:现在定义代价函数J,其中p1和p2表示已知的二分类出现的先验概率,c11,c12,c21,c22表示对应的经验代价权重参数,这些参数看做常量,公式(Van Trees)有:然后代入多元高斯分布下的条件概率密度函数,m是数据维度(特征数量)。此处只针对二分原创 2016-04-11 13:06:47 · 4021 阅读 · 2 评论 -
【机器学习】贝叶斯线性回归模型
假设当前数据为X,回归参数为W,结果为B,那么根据贝叶斯公式,可以得到后验概率:,我们的目标是让后验概率最大化。其中pD概率是从已知数据中获取的量,视为常量;pw函数是w分布的先验信息。令: 求l函数最大化的过程称为w的极大似然估计(ML),求pie函数最小化的过程称为最大后验估计(MAP)。ML没有利用w的先验信息,因此结果不如MAP好。MAP和ML计算得到的W 的结果可能不原创 2016-04-21 20:18:43 · 9615 阅读 · 3 评论 -
【图像处理】霍夫变换
图像处理分析过程中,检测特定的形状是重要的一步。霍夫变换(Hough)通过转换坐标系,将特定形状的检测映射到参数空间中,从而根据参数空间中的值来确定特定形状的相关信息。原创 2016-09-09 00:53:31 · 3038 阅读 · 0 评论 -
梯度下降优化算法综述
梯度下降优化算法综述 该文翻译自An overview of gradient descent optimization algorithms。转载 2016-09-09 09:52:26 · 917 阅读 · 0 评论 -
【机器学习】GMM模型的直观推导(含中间步骤)
GMM模型即高斯混合模型,根据大数定律,在日常生活中,很多概率事件都服从高斯分布,因此GMM模型可以应用在这些概率事件的分析上。GMM模型由K个独立的高斯分布混合而成。我们可以这样直观求解GMM模型原创 2016-11-09 01:43:16 · 6468 阅读 · 1 评论 -
【机器学习】拟牛顿下降优化方法-BFGS
牛顿法是求解最优化,理论上最好最精确的方法,公式为:xk+1=xk−f′(xk)f″(xk)x_{k+1}=x_k-\frac{f'(x_k)}{f''(x_k)},原理是求解导数为0的情况。如果xkx_k是一个高维数据,且函数f(x)f(x)非常复杂,那么求解1/f″(x)1/f''(x)就是很麻烦的过程。拟牛顿法的思路是,在牛顿法的基础上,对1/f″(x)1/f''(x)做个近似估计就行了,不需原创 2016-11-06 01:55:01 · 514 阅读 · 0 评论 -
【机器学习】反向传播神经网络推导
简单的反向传播神经网络可以说就是将基本单元如感知器,组成层级结构,划分出输入层、隐含层、输出层;不同层之间通过连接来形成耦合,从而组成一个有功用的网状算法结构。原创 2016-08-23 02:17:19 · 1290 阅读 · 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 评论