自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(44)
  • 资源 (1)
  • 收藏
  • 关注

原创 tensorflow之内存暴涨问题

在用tensorflow实现一些模型的时候,有时候我们在运行程序的时候,会发现程序占用的内存在不断增长。最后内存溢出,程序被kill掉了。这个问题,其实有两个可能性。一个是比较常见,同时也是很难发现的。这个问题的解决,需要我们知道tensorflow在构图的时候,是没有所谓的临时变量的,只要有operator。那么tensorflow就会在构建的图中增加这个operator所代表的节点。所以,...

2018-06-17 11:40:51 20845 2

原创 为什么要用交叉熵作为代价函数

对于大多数人来说,犯错是一件让人很不开心的事情。但反过来想,犯错可以让我们意识到自己的不足,然后我们很快就学会下次不能再犯错了。犯的错越多,我们学习进步就越快。同样的,在神经网络训练当中,当神经网络的输出与标签不一样时,也就是神经网络预测错了,这时我们希望神经网络可以很快地从错误当中学习,然后避免再预测错了。那么现实中,神经网络真的会很快地纠正错误吗?我们来看一个简单的例子: 上图是...

2018-03-10 20:28:33 5344 6

原创 模型评估指标AUC(area under the curve)

AUC在机器学习领域中是一种模型评估指标。根据维基百科的定义,AUC(area under the curve)是ROC曲线下的面积。所以,在理解AUC之前,要先了解ROC是什么。而ROC的计算又需要借助混淆矩阵,因此,我们先从混淆矩阵开始谈起。混淆矩阵假设,我们有一个任务:给定一些患者的样本,构建一个模型来预测肿瘤是不是恶性的。在这里,肿瘤要么良性,要么恶性,所以这是一个典型的二分类...

2018-03-07 16:42:33 137509 42

原创 强化学习(七):策略梯度

回顾在上一节中,我们主要是利用函数近似来将Vπ(s)Vπ(s)V^{\pi}(s)与Qπ(s,a)Qπ(s,a)Q^{\pi}(s,a)参数化: 而我们的策略ππ\pi则是从Q值中产生的。比如我们一直使用的ϵ−greedyϵ−greedy\epsilon - greedy探索方法就是根据最大的Q值来选择动作(action)。没有Q值的话就无法使用这个方法了。也就是这个策略的更新是根据Q值...

2018-03-07 14:06:53 22836 1

原创 强化学习(六):价值函数的逼近(近似)

在强化学习(五):Sarsa算法与Q-Learning的学习中,我们都是假设状态是有限的,而且数量也不多,就像例程中都是使用格子世界,每个格子代表一个状态。但是,现在让我们来假设我们在下围棋,每下一个子就是一种状态,那么这些状态就非常多了,如果在程序中要用一个表格来表示状态与状态对应的值函数的话,那么内存就远远不够用了。另外,当状态不是离散的时候,就无法用表格来表示了。所以,我们需要另外的...

2018-02-18 14:42:42 12404

原创 word2013多级列表自动编号与多样式配合排版

作为学生党,经常需要写一些课程报告或者项目报告之类的文档。但是我发现很多人都是直接在写标题的时候把编号也手动写上去,不知道怎么在word里面让标题自动编号。手动写编号看起来也没什么问题,但是当你需要修改文档的时候,添加某一节或者某一章的时候,那么后续的所有章节的编号都要重新手动改一次,如果文档标题比较多,改起来就十分麻烦了。而word本身就自带了强大的排版功能,所以今天就来讲一下如何设置多级标

2018-01-29 15:44:07 18152 3

原创 强化学习(五):Sarsa算法与Q-Learning算法

上一节主要讲了Monte-Carlo learning,TD learning,TD(λ)TD(\lambda)。这三个方法都是为了在给定策略下来估计价值函数V(s)。只不过Monte-Carlo learning需要得到一个完整的episode才能进行一次v值更新,而TD learning则不用,它可以每走一步就更新一次v值。 但是我们的目标是想得到最优策略,所以我们这一讲就是为了通过价值函数

2018-01-21 12:11:15 27338 8

原创 强化学习(四):蒙特卡罗学习(MonteCarlo)与时序差分学习(TD learning)

上一节讲的是在已知模型的情况下,如何去解决一个马尔科夫决策过程(MDP)问题。方法就是通过动态规划来评估一个给定的策略,通过不断迭代最终得到最优价值函数。具体的做法有两个:一个是策略迭代,一个是值迭代。从这一节开始,我们将要进入模型未知的情况下,如何去解决一个MDP问题的方法。从本讲开始会用两讲的时间讨论解决一个可以被认为是MDP、但却不掌握MDP具体细节的问题,也就是讲述如何直接从Agent

2018-01-20 22:33:00 31609 13

原创 强化学习(三):动态规划求解MDP(Planning by Dynamic Programming)

上一节主要是引入了MDP(Markov decision process)的各种相关的定义与概念。最后得到了最优状态值函数v∗(s)v_*(s)和最优状态动作值函数q∗(s,a)q_*(s,a)的定义与公式。这一节主要是在已知模型的情况下利用动态规划来进行强化学习求解v∗(s)v_*(s)和q∗(s,a)q_*(s,a)。什么叫已知模型的情况?就是说上一节讲到的S,A,P,R,γ>,这些都是已知的

2018-01-18 13:57:46 24516 13

原创 强化学习(二):马尔科夫决策过程(Markov decision process)

本章是强化学习的基础,主要讲的就是马尔科夫决策过程,以后的内容都是以这一节为基础的,所以对本节的相关概念的理解是很重要的。这一节的概念比较多,也是后面章节的基础,一开始笔者也是一头雾水,只有多看几遍,多去思考,才能慢慢理解。毕竟概念与定义比较多,想要一下子消化完还是有一些难度的。这篇博客也是笔者看完David Silver的公开课与其它一些参考资料后的理解,希望对大家有所帮助。Ma

2018-01-17 10:03:59 98573 46

原创 强化学习(一):简介

什么是强化学习上图是一个强化学习的示意图。Agent可以看作是一个机器人,这个机器人在t时刻,通过观测(各种sensors来观测世界)环境得到agent自己所在的状态,接下来agent进行一些运算(思考,决策)之后,做出了一个动作action。这个action就会作用在Environment中,使得agent在environment中转移到一个新的状态state,并且在转移时获得一个即时的

2018-01-16 17:16:52 13596 5

原创 机器学习数据不平衡处理之SMOTE算法实现

网上关于数据不平衡处理的讨论有很多,大致来说,数据不平衡的处理方法有三种:一是欠采样,二是过采样,三是调整权重。今天要说的是过采样中的一个算法SMOTE。在网上找到一个Python库imbalance-learn package 。它是专门用来处理数据不平衡的,网址在这:https://pypi.python.org/pypi/imbalanced-learn#id27 安装说明安装之后就可以使用

2017-10-28 23:58:19 25156

原创 tensorflow之可视化工具tesorboard的简单使用

一般在训练神经网络的时候,参数很多,也很复杂,有时我们就想把训练过程的一些数据进行可视化,方便我们调参。比如,如果我们可以看到神经网络训练过程的训练集的loss变化情况以及测试集的loss变化情况,通过这两条曲线我们就可以大致判断我们的网络是否已经过拟合了。所以说,可视化对我们调参的帮助还是挺大的。而深度学习框架tensorflow就自带了一款可视化工具tensorboard来方便 TensorFl

2017-10-22 15:20:42 2035 1

原创 tensorflow之保存模型与加载模型

在TensorFlow中,保存模型与加载模型所用到的是tf.train.Saver()这个类。在加载模型的时候会用到restore()函数我们一般的想法就是,保存模型之后,在另外的文件中重新将模型导入,我可以利用模型中的operation和variable来测试新的数据。什么是TensorFlow中的模型首先,我们先来理解一下TensorFlow里面的模型是什么。

2017-10-21 23:25:14 5442

原创 tensorflow tf.train.batch之数据批量读取

在进行大量数据训练神经网络的时候,可能需要批量读取数据。于是参考了这篇博文的代码,结果发现数据一直批量循环输出,不会在数据的末尾自动停止。然后发现这篇博文说slice_input_producer()这个函数有一个形参num_epochs,通过设置它的值就可以控制全部数据循环输出几次。于是我设置之后出现以下的报错:tensorflow.python.framework.errors_impl.Fai

2017-10-21 21:10:12 22596 4

原创 CS224n笔记三之词向量模型与GloVe

词向量模型语言学家J. R. Firth提出,通过一个单词的上下文可以得到它的意思,所以我们可以定义一个以预测某个单词的上下文的模型: p(context|wt)= ...p(context|w_t) = \ ... 我们的目标当然是希望概率p越大越好,所以我们可以定义一个目标函数: J′(θ)=∏t=1T∏−m≤j≤m, j≠0P(wt+j|wt;θ){J}'(\theta) = \pr

2017-10-14 10:04:56 1623 2

原创 CS224n笔记二之word2vec与softmax推导

最近刚刚开始看斯坦福CS224n系列视频,主要讲的是自然语言处理与深度学习的结合。笔者怕自己看完视频就忘了,因此想记录下学习过程中的笔记。当然笔者发现了网上已经有人也发了一些CS224n的学习笔记。笔者主要学习了视频和参考了这篇笔记,再加上一些自己觉得难懂的地方的理解。笔者也是刚刚入门,水平有限,如有错漏,还望指出。如何在电脑中表示一个词的意义?用电脑表示一个词的问题词...

2017-10-03 12:26:07 2346 2

原创 无监督学习之K-均值算法分析与MATLAB代码实现

前言K-均值是一种无监督的聚类算法。首先我们要知道什么是无监督,无监督就是说在数据集中,数据是没有标签的。在有监督的数据集中,数据的形式可能是这样:{(x(1),y(1)),(x(2),y(2)),...,(x(m),y(m))}\{(x^{(1)},y^{(1)}),(x^{(2)},y^{(2)}),...,(x^{(m)},y^{(m)})\}。而在无监督的数据集中,数据的形式是:{x(1),

2017-09-08 19:43:39 4261

原创 机器学习:支持向量机(SVM)与Python实现第(四)篇

前言最近看了Andrew Ng的机器学习视频中的支持向量机,视频的内容比较浅显,没有深入解释支持向量机中的数学原理。但是对于一个比较执着于知道为什么的人,笔者还是去网上查找了有关支持向量机原理以及实现的相关资料。在查找的过程中,笔者发现支持向量机的内容还是蛮多的,于是笔者根据自己的理解,并且参考了一些相关资料,最终写下了支持向量机的四篇博客。 机器学习:支持向量机(SVM)与Python实现第(一

2017-08-29 14:23:14 5109 1

原创 机器学习:支持向量机(SVM)与Python实现第(三)篇

前面我们介绍了很多东西,但一直都是基于数据是线性可分的。那么对于那些非线性的数据呢? 比如上面的图,数据显然不是线性可分的(事实上得用圆来作边界)。我们知道二次曲线方程(圆是特殊的二次曲线)一般可以写成: w1x21+w2x22+w3x1x2+w4x1+w5x2+w6=0\begin{aligned}w_1x_1^2+w_2x_2^2+w_3x_1x_2+w_4x_1+w_5x_2+w_

2017-08-25 09:41:23 2261

原创 机器学习:支持向量机(SVM)与Python实现第(二)篇

上一节经过我们的推导,最终把问题变成: minγ,w,b 12∥w∥2s.t.  y(i)(wTx(i)+b)≥1, i=1,...,m\begin{aligned}& \underset{\gamma,w,b}{min} \ \frac{1}{2}\left \| w \right \|^2\\&s.t.\ \ y^{(i)}(w^{T}x^{(i)}+b)\geq 1,\ i=1,...,

2017-08-24 15:53:53 2892 1

原创 机器学习:支持向量机(SVM)与Python实现第(一)篇

前言最近看了Andrew Ng的机器学习视频中的支持向量机,视频的内容比较浅显,没有深入解释支持向量机中的数学原理。但是对于一个比较执着于知道为什么的人,笔者还是去网上查找了有关支持向量机原理以及实现的相关资料。在查找的过程中,笔者发现支持向量机的内容还是蛮多的,于是笔者根据自己的理解,并且参考了一些相关资料,最终写下了支持向量机的四篇博客。 机器学习:支持向量机(SVM)与Python实现第(一

2017-08-23 20:16:35 14901

原创 google books ngram viewer数据集的下载与使用

最近在做有关word2vec的项目,需要使用到google books ngram viewer中的数据集。但是打开网页后发现,由于数据很大,google将数据集分成了很多个文件。我如果要下载的话,需要一个一个链接去点开下载,这样似乎很麻烦。后来我无意中发现了一个Python的package,可以直接使用到google books ngram viewer上面的数据。首先安装一下这个包:

2017-08-18 21:08:23 15428 1

原创 python之__iter__函数与__next__函数

容器(container)容器是用来储存元素的一种数据结构,容器将所有数据保存在内存中,Python中典型的容器有:list,set,dict,str等等。class test(): def __init__(self,data=1): self.data = data def __iter__(self): return self def __

2017-08-18 17:59:32 69606 11

原创 机器学习:算法性能度量之查准率与查全率

我们经常使用错误率(即分类错误的样本占总体样本的比例)来分析一个机器学习算法的性能,但是有时候不能满足任务的需求。例如,我们想要利用机器学习算法来预测肿瘤是不是恶性的。在训练集中,只有0.5%的样本是恶性肿瘤。假设我编写一个非机器学习的算法,无论输入是什么,我都预测肿瘤是良性的,那么最终错误率也就只有0.5%。而如果我通过一个机器学习算法得到了1%的错误率,我是不是可以说这个机器学习的算法反而...

2017-08-08 21:47:45 3504 2

原创 机器学习:偏差、方差与欠拟合、过拟合

首先,我们先来理解一下偏差与方差的概念。举个高中数学里经常出现的例子,两个射击选手在射靶。甲射出的子弹很集中在某个区域,但是都偏离了靶心。我们说他的射击很稳定,但是不够准,准确性差。也就是说他的方差小(子弹很集中在某个区域),但是他的偏差大(子弹打中的地方距离靶心远)。相反,乙射出的子弹比较分散,但是有些很准,中了靶心。我们说他射击比较准,但是发挥不够稳定,稳定性差。 所以,偏差是描述了准确性。方

2017-08-07 20:32:10 6217

原创 机器学习:对于反向传播算法(backpropagation)的理解以及python代码实现

本文是对机器学习中遇到的后向传播算法进行理解,假设读者已经知道神经网络中的神经元的含义,激励函数的定义,也知道了后向传播算法那个传播公式等。本文主要是为了理解为什么后向传播算法中的δ\delta是安照那个传播方式往后传播。如上图,其中,L是神经网络的层数,a是神经元的输出,θ\theta是权重(参数)。 对于最后一层的神经元来说,偏差E我们可以很容易地定义: E=12(a(L)1−y)2E =

2017-08-03 16:15:07 3609

原创 机器学习:如何理解神经网络可以用来解决复杂的非线性函数

我们知道神经网络里面有很多的层,每一层又有很多的神经元。看起来就非常复杂,似乎输入与输出都很凌乱,对它的理解也很难。那么我们可以从单个神经元入手,考虑单个神经元的输入与输出之间的关系,再扩展到整个神经网络。从图中可以得到: hθ(x)=g(−30+20x1+20x2)h_{\theta}(x)=g(-30+20x_{1}+20x_{2}) 假如x1和x2的组合如下: x1 x2 y

2017-07-23 17:16:20 8683

原创 机器学习:如何理解机器学习中的逻辑回归

逻辑回归也可以说是一个分类器。在二分类器中,输出要么是0,要么是1。所以对于一组输入来说,我们要做的就是通过这个输入的数据,经过假设函数的处理之后,输出结果是1的概率。也就是说,输出是一个概率值。所以现在要转成逻辑函数: hθ(x)=11+e−θTxh_{\theta}(x) = \frac{1}{1+e^{-\theta^{T}x}} 如何理解这个逻辑函数呢? 这个函数就是为了评估输入为x时

2017-07-23 11:41:21 563

原创 机器学习:梯度下降算法

假如我们有一个数据集: (xi1,xi2,yi)(x_{1}^{i},x_{2}^{i},y^{i}) 其中,i是从1到m。数据集总共有m组。前两个是自变量,最后一个是因变量。我们可以这样理解,存在某种关系,使得y会随着x1和x2的变化而变化。这种理解跟函数是不是很像?实际上,我们确实可以假设存在这样一个函数,它跟数据集很拟合。所以即使数据集里没有的它也可以预测出结果。现在假设有一个线性的

2017-07-17 21:13:22 499

原创 python内置函数之callable

callable(object):这个函数的作用是检查一个对象是否可以调用的。如果返回True,object仍然可能调用失败。但是返回False,则调用object一定不会成功。需要注意的是:类是可以调用的,类的调用返回这个类的一个实例。而类的实例需要定义了__call__()才可以调用。例子:class example: def __call__(

2017-06-18 14:20:31 412

原创 Ubuntu下WPS中文字体显示问题

在Ubuntu下安装了WPS之后,每次打开都会出现系统字体缺失的提醒。原因是有些字体没有在字体库中。解决方法如下:1 下载系统字体2 下载完成之后,解压并且进入目录中,将字体复制到/usr/share/fonts中:sudo cp * /usr/share/fonts3 执行下面的命令,生成字体的索引信息:sudo mkfontscalesudo m

2017-06-17 20:31:05 9810 1

原创 关于python中if __name__=='__main__'的含义

在python中,我们经常看到在源文件的最后通常都会有这样一个语句:If __name__ == '__main__': 那么,它的作用究竟是什么呢?比如我们定义了一个python文件为example.py:def test(): print 'success'if __name__ == '__main__': test()如果我直接在命

2017-06-16 21:56:19 4872 1

原创 线性代数之从线性方程组看线性组合

前言:对于一个线性方程组,我们可以通过画出每条方程所代表的曲线,所有曲线的交点就是该线性方程组的解。这种做法可以看做是对矩阵方程Ax = b 的行解法。如果从列的角度看,就是线性组合了。例如线性方程组:写成矩阵的形式就是:  即 Ax = b行图像:首先我们画出方程2x-y=0和-x+2y=0分别代表的直线:很显然,我们可以看到该方程

2017-01-21 15:42:57 6720 2

原创 将视频文件发布到ROS的topic上

前言:录制了一个视频文件,想要将其发布到ROS的topic上,好让其他的节点去订阅。可以使用opencv的VideoCapture类。VideoCapture的介绍请参考:http://docs.opencv.org/2.4/modules/highgui/doc/reading_and_writing_images_and_video.html#VideoCapture

2017-01-14 14:20:06 2821

原创 如何添加自定义的msg到ORB SLAM

前言:最近想要修改ORB SLAM的代码,想在ORB SLAM中订阅我自己定义的msg,于是查找相关资料,看看如何在ORB SLAM中添加自定义的消息。步骤:1 在ORB_SLAM目录下新建文件夹msg。2 在msg文件夹中写下XXX.msg文件。就是你自己要定义的msg。3 回到ORB_SLAM目录下,打开CMakeList文件。在文件

2017-01-14 14:09:12 430

原创 使用MATLAB toolbox标定摄像头的参数

前言:在使用orb slam的时候,有个Settings.yaml文件,里面需要填写所用摄像头的参数,包括焦距(focal length),光学中心(optical center,也叫偏斜参数(skew coefficient)),径向畸变参数(radial distortion coefficients)和切向畸变参数(Tangential distortion coefficients

2016-12-24 10:12:09 5635

原创 摄像头与imu之间的坐标系转换

最近由于实习需要在玩orb slam,然后想在摄像头上安装一个imu来辅助测量。在把imu贴在摄像头后面之后,一个问题出现了:摄像头的坐标系与imu的坐标系不会对得很准,即它们的坐标很难人工对准。要让它们的坐标轴都重合,需要一个转换。上图中,C1:摄像头从初始状态(即单位阵I,这个单位阵是指摄像头开机的时候当做起始状态)到T1时刻的转换为C1;C2:摄像头从初始状态

2016-12-17 09:53:17 12122 3

原创 ROS学习之tf在rviz中的显示

昨天粗略看了一下ros中rviz的用法。事实,他就是一个可视化的工具。wiki的用户手册:http://wiki.ros.org/rviz/UserGuide今天在学习tf的教程时,首先是演示了一个demo。tf教程链接:http://wiki.ros.org/tf/Tutorials/Introduction%20to%20tf笔者按照教程操作,在最后使用这个命令:$

2016-11-10 14:46:32 13461

转载 linux用命令行快速切换目录

本文转自: http://developer.51cto.com/art/201308/408045.htm和很多人一样,我也是在电脑前度过一天的大部分时间。为了提高效率(并且不让我的身体有太多的抱怨),我试着建立一个优化的环境。例如,我使用Vim写代码,使用Vimperator浏览网页,使用 i3 窗口管理器。其他日常事情就是文件系统导航(从一个目录切换到另一个目录——译者注

2016-11-09 18:08:42 2470

matlab问题集锦

胞元数组是以“编号”为寻访手段的,而架构数组则是以“名称”为寻访手段的,用以存放不同大小的各类数据的异构容器。数据不能放在架构中,只能存放在域中。

2015-12-13

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除