Vim 练级攻略一

你想以最快的速度学习人类史上最好的文本编辑器VIM吗?你先得懂得如何在VIM幸存下来,然后一点一点地学习各种戏法。Vim: the Six Billion Dollar editorBetter, Stronger, Faster.学习Vim并且其会成为你最后一个使用的文本编辑器。没有比这个更好的文本编辑器了,非常地难学,但是却不可思议地好用。我建议下面这四个步骤:存活感觉良好觉得更好,更强,更快使用VIM的超能力当你走完这篇文章,你会成为一个vim的 superstar。在开始学习以前,我需要给你一些警告:学习vim在开始时是痛苦的。需要时间需要不断地练习,就像你学习一个乐器一样。不要期望你能在3天内把vim练得比别的编辑器更有效率。事实上,你需要2周时间的苦练,而不是3天。##第一级 – 存活安装Vim启动Vim什么也不干!请先阅读当你安装好一个编辑器后,你一定会想在其中输入点什么东西,然后看看这个编辑器是什么样子。但vim不是这样的,请按照下面的命令操作:启动Vim后,vim在 Normal 模式下。让我们进入 Insert 模式,请按下键 i 。(你会看到vim左下角有一个–insert–字样,表示,你可以以插入的方式输入了)此时,你可以输入文本了,就像你用“记事本”一样。如果你想返回 Normal 模式,请按 ESC 键。现在,你知道如何在 Insert 和 Normal 模式下切换了。下面是一些命令,可以让你在 Normal 模式下幸存下来(箭头不代表按键):i → Insert 模式,按…

0 Comments

在Windows上安装并加速拉取Docker镜像的方法

Docker容器服务近来可谓是一日千里爆炸式的发展,但是在国内安装Docker或者拉取庞大的Docker镜像都不可避免的遇到蜗牛式速度的问题,本文主要关于加速下载DockerWindows客户端和镜像的方法。   下载Docker Windows客户端 使用Daocloud提供的下载地址,基本上几分钟即可下载完100Mb左右的Docker Windows客户端,而用Docker官网的下载地址可谓几乎没有速度。 加速拉取Docker镜像 不挂VPN直接拉取Docker镜像绝对是灾难性的体验,不仅慢如狗而且极容易中断连接。这里我们同样使用Daocloud提供的镜像站如这里,使用方法为在Docker右键菜单的设置选项内的DockerDaemon里面,加上一段地址改为如下形式, 1 2 3 4 5 6 { "registry-mirrors": [ "http://59dcc468.m.daocloud.io" ], "insecure-registries": [] } 之后Docker会自动重启,之后再Pool镜像即可享受火箭加速般的提升!  

0 Comments

Vim 练级攻略二

第三级 – 更好,更强,更快先恭喜你!你干的很不错。我们可以开始一些更为有趣的事了。在第三级,我们只谈那些和vi可以兼容的命令。更好下面,让我们看一下vim是怎么重复自己的:. → (小数点) 可以重复上一次的命令N → 重复某个命令N次下面是一个示例,找开一个文件你可以试试下面的命令:2dd → 删除2行3p → 粘贴文本3次100idesu [ESC] → 会写下 “desu desu desu desu desu desu desu desu desu desu desu desu desu desu desu…

0 Comments

Deep Learning Interview

整理一些关于Deep Learning的面试问题。问题列表CNN最成功的应用是在CV,那为什么NLP和Speech的很多问题也可以用CNN解出来?为什么AlphaGo里也用了CNN?这几个不相关的问题的相似性在哪里?CNN通过什么手段抓住了这个共性?以上几个不相关问题的相关性在于,都存在局部与整体的关系,由低层次的特征经过组合,组成高层次的特征,并且得到不同特征之间的空间相关性。如下图:低层次的直线/曲线等特征,组合成为不同的形状,最后得到汽车的表示。CNN抓住此共性的手段主要有四个:局部连接/权值共享/池化操作/多层次结构。局部连接使网络可以提取数据的局部特征;权值共享大大降低了网络的训练难度,一个Filter只提取一个特征,在整个图片(或者语音/文本) 中进行卷积;池化操作与多层次结构一起,实现了数据的降维,将低层次的局部特征组合成为较高层次的特征,从而对整个图片进行表示。为什么很多做人脸的Paper会最后加入一个Local Connected Conv?如果每一个点的处理使用相同的Filter,则为全卷积,如果使用不同的Filter,则为Local-Conv。后接了3个Local-Conv层,这里是用Local-Conv的原因是,人脸在不同的区域存在不同的特征(眼睛/鼻子/嘴的分布位置相对固定),当不存在全局的局部特征分布时,Local-Conv更适合特征的提取。什么样的资料集不适合用深度学习?数据集太小,数据样本不足时,深度学习相对其它机器学习算法,没有明显优势。数据集没有局部相关特性,目前深度学习表现比较好的领域主要是图像/语音/自然语言处理等领域,这些领域的一个共性是局部相关性。图像中像素组成物体,语音信号中音位组合成单词,文本数据中单词组合成句子,这些特征元素的组合一旦被打乱,表示的含义同时也被改变。对于没有这样的局部相关性的数据集,不适于使用深度学习算法进行处理。举个例子:预测一个人的健康状况,相关的参数会有年龄、职业、收入、家庭状况等各种元素,将这些元素打乱,并不会影响相关的结果。对所有优化问题来说, 有没有可能找到比現在已知算法更好的算法?No Free Lunch定律:不存在一个通用普适的模型,对于所有的学习问题都能做到性能最佳。对于训练样本(黑点),不同的算法A/B在不同的测试样本(白点)中有不同的表现,这表示:对于一个学习算法A,若它在某些问题上比学习算法 B更好,则必然存在一些问题,在那里B比A好。也就是说:对于所有问题,无论学习算法A多聪明,学习算法 B多笨拙,它们的期望性能相同。但是:没有免费午餐定力假设所有问题出现几率相同,实际应用中,不同的场景,会有不同的问题分布,所以,在优化算法时,针对具体问题进行分析,是算法优化的核心所在。用贝叶斯机率说明Dropout的原理Dropout as a Bayesian Approximation: Insights and Applications何为共线性, 跟过拟合有啥关联?Multicollinearity-Wikipedia共线性:多变量线性回归中,变量之间由于存在高度相关关系而使回归估计不准确。共线性会造成冗余,导致过拟合。解决方法:排除变量的相关性/加入权重正则。说明如何用支持向量机实现深度学习(列出相关数学公式)广义线性模型是怎被应用在深度学习中?A Statistical View of Deep Learning (I): Recursive GLMs ← The Spectator深度学习从统计学角度,可以看做递归的广义线性模型。广义线性模型相对于经典的线性模型(y=wx+b),核心在于引入了连接函数g(.),形式变为:y=g−1(wx+b)。深度学习时递归的广义线性模型,神经元的激活函数,即为广义线性模型的链接函数。逻辑回归(广义线性模型的一种)的Logistic函数即为神经元激活函数中的Sigmoid函数,很多类似的方法在统计学和神经网络中的名称不一样,容易引起初学者的困惑。下图是一个对照表:什么造成梯度消失问题? 推导一下How…

0 Comments

RECURRENT NEURAL NETWORKS TUTORIAL, PART 2 – IMPLEMENTING A RNN WITH PYTHON, NUMPY AND THEANO

本文将用Python实现完整的RNN,并且用Theano来优化。语言模型我们的目标是使用RNN建立一个语言模型。以下我们举例说明什么是语言模型。例如,你说了一句包括$$m$$个词语的句子,语言模型可以为这句话出现的概率打分:$$P(w_1,cdots,w_m) = prod_{i=1}^m P(w_i mid w_1,cdots,w_{i-1})$$ 每一个词语的概率都取决于它之前的所有的词的概率。这样的模型有什么用处呢?可以用于机器翻译或者语音识别中的正确句子打分以概率生成新的句子注意到在上面的公式内,我们使用了所有的之前的词的概率,实际上这在计算和存储时的耗费都是巨大的,通常而言只会取2~4个词左右。预处理并训练数据1.标记化原始的文本需要被标记化,例如需要把文本标记为句子,句子标记为词语,并且还需要处理标点符号。我们将使用NLTK的word_tokenizesent_tokenize方法。2.移除低频词移除低频词不管是对于训练和预测都是有帮助的。这里我们设置一个上限vocabulary_size为8000,出现次数少于它的词都会被替换为UNKNOWN_TOKEN输入,而当输出是UNKNOWN_TOKEN时,它将被随机替换为一个不在词表内的词,亦或者持续预测直到不出现UNKNOWN_TOKEN为止。3.放置句子开始和结束标记为了解句子的开始和结束,我们把SENTENCE_START放置在句子开头,并且把SENTENCE_END放置在句子结尾。4.建立训练数据的矩阵RNN的输入和输出都是向量而不是字符串,我们需要把词与向量一一对应,通过index_to_word和word_to_index。比如一个训练的例子$$x$$为[0, 179, 341, 416](注意到其中每个元素都是长度为vocabulary_size的one-hot向量,所以$$x$$实际上是一个矩阵),那么其label-$$y$$为[179, 341, 416, 1],注意到我们的目标是预测下一个词,所以$$y$$就是$$x$$移动一位,并添加上最后的一个元素(预测词)的结果,其中SENTENCE_START和SENTENCE_END分别为0和1.123456789101112131415161718192021222324252627282930313233343536373839404142vocabulary_size = 8000unknown_token = "UNKNOWN_TOKEN"sentence_start_token = "SENTENCE_START"sentence_end_token = "SENTENCE_END"# Read the data and append SENTENCE_START and SENTENCE_END tokensprint…

0 Comments

Amdahl’s law

关于Amdahl’s law。Amdahl’s law,又叫做阿姆达尔定律,其意义在于表示了计算机并行计算处理任务的加速的极限。简略证明解释如下,假设一个任务需要时间$T$来完成,而其中可以被并行处理加速的部分比例为$p$,那么不能被并行计算加速的部分就为$1-p$,比如从磁盘上读取程序段就不能并行加速,而读取完成到内存中就可以开多个进程或者利用分布式的方法并行处理来加速。$$T = (1-p)T + pT$$开启加速后,可以加速的部分时间减少至原来的 $frac {p} {s}$$$T’ = (1-p)T + frac p s T$$则加速比就为$$S_{text{latency}}(s) = frac {T} {T’} = frac{1}{1 - p + frac p s}$$意义Amdahl’s law揭示了不管如何的进行并行计算,只要任务包含无法被并行加速的部分,那么加速比是有上限的,因为$$lim_{s…

0 Comments

char-rnn-chinese

本文主要根据Multi-layer Recurrent Neural Networks (LSTM, GRU, RNN) for character-level language models in Torch的内容来进行试验。 #准备工作 根据原文“This code is written in Lua and requires Torch. Additionally, you need to install the nngraph…

0 Comments