Git中LF will be replaced by CRLF问题原因及解决方法

在Git或者Github上进行跨平台项目合作开发时,会遇到换行符转换的问题。

编辑文档的过程中,在按下回车键的时候实际上是向文档插入了一个不可见的换行符。在Windows系统中是CRLF (Carriage-Return Line-Feed,即回车换行)就是回车符CR (ASCII 13, \r)加上换行符LF (ASCII 10, \n)。在Linux/UNIX、OS X系统中只用换行符LF来标识一行的结束。

问题就来了,结尾换行符不一致在版本更新的时候就会导致不必要的麻烦,版本管理系统可能将换行符不一致视为对文件的修改。这当然不是我们所希望的,所幸,Git和Github有专门针对这个问题的解决方法。

Machine Learning - Andrew Ng on Coursera (Week 6)

Machine Learning - Andrew Ng on Coursera (Week 6)

接下将整理并发布学习Coursera上Andrew Ng的Machine Learning课程系列学习笔记,旨在与更多的机器学习爱好者一起分享学习心得,共同进步。本篇第六周的课程,主要内容是如何评价机器学习的算法并防止过拟合或者欠拟合。

评价机器学习算法

讨论在建立了模型假设,收集了相关数据以后接下来应该怎么做。初步学习的算法往往不准确的,所以需要对学习算法进行调试和评估,以进行进一步的优化。
假设实现了一个正则化的线性回归算法来预测房价,使以下代价函数最小:

$$J(\theta)=\frac{1}{2m}[\sum_{i=1}^{m}(h_\theta(x^{(i)})-y^{(i)})^2+\lambda\sum_{j=1}^{m}\theta_j^2]$$

Machine Learning - Andrew Ng on Coursera (Week 5)

Machine Learning - Andrew Ng on Coursera (Week 5)

接下将整理并发布学习Coursera上Andrew Ng的Machine Learning课程系列学习笔记,旨在与更多的机器学习爱好者一起分享学习心得,共同进步。本篇第五周的课程,主要内容是继续讲解神经网络,包括代价函数、后向算法以及如何用后向算法求解神经网络模型的技巧。

代价函数及后向算法

Cost function(代价函数)

首先回顾一下神经网络的结构:

神经网络结构

Machine Learning - Andrew Ng on Coursera (Week 4)

Machine Learning - Andrew Ng on Coursera (Week 4)

接下将整理并发布学习Coursera上Andrew Ng的Machine Learning课程系列学习笔记,旨在与更多的机器学习爱好者一起分享学习心得,共同进步。本篇第四周的课程,主要内容是关于神经网络简单入门及应用。

动机

为什么要引入神经网络?在分类问题中,特别是在非凸边界函数的情况下,要将用样本训练分类器,假设公式$h_\theta$会写的比较复杂,两个变量的问题可能会涉及到三阶以及上的项,特征变量的数量如果随之增加,那么求解的难度会成倍地增加。

特别的,在机器视觉相关问题中,一块图像区域可能包含成千上万个像素点,如果都作为特征变量的话用线性回归或者逻辑回归会使问题变得尤为复杂。通常在图像分类问题中都采用的是神经网络算法,通过提取特定区域的像素值作为特征变量进行训练和识别,可以有效提高正确率和效率。

Machine Learning - Andrew Ng on Coursera (Week 3)

Machine Learning - Andrew Ng on Coursera (Week 3)

接下将整理并发布学习Coursera上Andrew Ng的Machine Learning课程系列学习笔记,旨在与更多的机器学习爱好者一起分享学习心得,共同进步。本篇第三周的课程,主要内容是分类问题的模型表示、逻辑回归和过拟合问题。

分类问题及模型表示

首先Andrew给出了几个例子来解释什么是分类问题,包括垃圾邮件的识别、在线交易的欺诈判别以及肿瘤是良性还恶性。从线性回归对连续值的预测转为了对离散值的预测。在只有两类的分类问题中,用0和1来表示否与是。在此情况下,便不宜用线性回归函数来分类,而需要选择另外的$h_\theta(x)$来解决此类问题,并且满足$0 \le h_\theta(x) \le 1$,于是选择了Sigmod函数,又称为Logistic函数。Sigmoid函数是一个在生物学中常见的S型的函数,在信息科学中,由于其单增以及反函数单增等性质,Sigmoid函数常被用作阈值函数,将变量映射到0,1之间,还被广泛应用于神经网络的激活函数中。因此,逻辑回归模型假设如下:

Machine Learning - Andrew Ng on Coursera (Week 2)

Machine Learning - Andrew Ng on Coursera (Week 2)

接下将整理并发布学习Coursera上Andrew Ng的Machine Learning课程系列学习笔记,旨在与更多的机器学习爱好者一起分享学习心得,共同进步。本篇第二周的课程,主要内容是设置作业环境以及多变量的线性回归。

设置作业环境

因为本课程涉及到在Octave或者Matlab提交作业,所以这一节讲了在各种不同的系统中如何安装Octave或者Matlab。安装比较简单,就不在此赘述。需要注意的有如下几点,如有其他疑问可私信或邮件讨论:

  1. Windows下Octave不支持Https,因此建议使用Matlab;
  2. Matlab针对本课程有120天的免费授权,任意系统均可使用;
  3. Mac OS X可能需要更改安全与隐私权限才能安装从非App Store中下载的应用,推荐Octave-CLI(命令行版Octave,更稳定)。

Machine Learning - Andrew Ng on Coursera (Week 1)

Machine Learning - Andrew Ng on Coursera (Week 1)

接下将整理并发布学习Coursera上Andrew Ng的Machine Learning课程系列学习笔记,旨在与更多的机器学习爱好者一起分享学习心得,共同进步。本篇第一周的课程,主要内容包括有监督式学习和无监督式学习、线性回归、成本函数、梯度下降算法等一些基础概念。

有监督式学习和无监督式学习

机器学习可以简单地理解为是从数据中学习一个映射函数$f(x) = y$,使得对于新的输入数据$x^{(i)}$预测其对应的$y^{(i)}$。机器学习的算法大致可以分为有监督学习(Supervised Learning)无监督学习(Unsupervised Learning)两种。两者的区别主要在于在学习的过程中训练集数据是否提供了因变量$y$的信息,如果提供了$y$的信息,那么该过程就是有监督学习,否则就是无监督学习。典型的有监督式学习如分类算法、回归算法,分别针对的是离散值和连续值的预测;无监督式学习如聚类算法等,在搜索引擎,生物基因等领域也有着广泛的应用。

Word2Vec学习笔记

Word2Vec学习笔记

Word2Vec是Google开源的一款用于计算词向量的工具,它可以对海量的词典和数据集上进行高效的训练,并得到稠密连续的词向量作为其他自然语言处理任务的基础。Word2Vec并不是一种算法,而是基于NLPM的高效实现,包含了CBoW和Skip-gram两个模型。本文将介绍统计语言模型中词向量的Discrete和Distributed Representation之间的区别,Word2Vec的模型一些细节。欢迎补充、指正并参与讨论。

基于Vagrant的CoreOS集群部署Kubernetes

Kubernetes简介

Kubernetes是一个开源的系统,用于自动部署,弹性扩容以及管理容器化的应用,是Docker生态圈中重要一员。Kubernetes来源于Google的Borg系统,经过了十多年的实践经验已经被证实是可以用于大数据量、高并发的实际生产环境中。其主要功能包括:

  1. 使用Docker对应用程序包装(package)、实例化(instantiate)、运行(run)。
  2. 以集群的方式运行、管理跨机器的容器。
  3. 解决Docker跨机器容器之间的通讯问题。
  4. Kubernetes的自我修复机制使得容器集群总是运行在用户期望的状态。

接下来将简单介绍以下几个概念,后续文章中会逐个解释,并最终完成运行一个深度学习的应用为目标,理解并实践Kubernetes。部署脚本已经上传至github,可移步至此访问

,