gitignore

如果用git管理的工程文件结构比较复杂,可以新建一个.gitignore文件 $cat .gitignore *.o tmp* 用来忽略一些文件,比如上面的内容可以用来忽略以.o结尾的文件和tmp开头的路径。 今天发现还可以用惊叹号!来做白名单。 $cat .gitignore *.o tmp* !*.c 这样确保.c文件不被git忽略。 值得注意的是,.gitignore里条件是靠后优先的,写在后面会覆盖前面的效果。 比如当前目录下有 $ls . a.c a.o tmp.c 上面的.gitignore不会忽略掉tmp.c

TEDxUW Why you will fail to have a great career

还是应该时不时地看看TED的演讲,总能接触到一些有意思的想法和观点。 TEDxUW是本地的TED类似的组织,Larry Smith是UW的老师。 虽然不认同他所有的观点,但还是有些感触,就是这个: 热情(Passion)和兴趣(Interest)是不同的。 Why you will fail to have a great career I asked, do you have passion? You say, I have interest. … Passion, Interest is not the same thing, are you really gonna go to your sweetie to say, Marry me! You are interesting 囧…

Good Friday

今天是Good Friday,是一个宗教节日。 从维基上抄一段过来: “耶穌受難節,是基督教信徒纪念耶稣基督被钉在十字架上受难的日子,是復活節前一个星期五。据圣经记载,耶稣于公元33年猶太曆尼散月十四日上午九时左右被钉在十字架上,于下午三时左右死去。耶穌唯獨吩咐門徒要紀念他的死亡。(路加福音22:19,20)” 从实验室出来的时候正好看到一队人走过,感觉挺有意思的。 头前是一辆警车,后面是一辆面包,上面应该是放着音箱功放之类的,开得很慢,有一个女士拿着话筒跟在后面唱着,曲调很有宗教味道,但是歌词完全不懂,不知道是什么语言。后面有穿着各色袍子的男男女女,大概有50人的样子,有的手里拿着书,有的手里捧着的像是歌本,跟着唱着。中间有一个举着一个大木牌上面画着像是耶稣,还有一个肩扛着十字架走在中间。 当时看着怯了,也没拍照。 在网上找了找类似的照片,貌似我看到的是很小规模的游行了。 网上的一张照片: 照片来源 想想自己没有宗教信仰,少了很多体会啊。

PCA的实现

PCA,全称是Principal component analysis,中文叫做主成分分析,是一种常用的数据处理手段。 直观的说,PCA是一种降维的手法。比如现在我们有1000个数据点,每个数据点是一个128维的向量,存储上可以是一个1000×128维的数组。经过PCA处理,我们仍然得到1000个数据点,但是每个数据点是一个小于128维的向量,比如我们用PCA将128维的数据降到64维。 PCA可以保证,在降维之后,数据表示的信息损失最小。 “损失最小”具体怎么定义? 还是以1000个128维的点为例,这1000个点,也就是1000个向量在一个128维的空间中。从在任何一维,也就是一个方向上来看,如果在这个方向上,各个向量大小差异很大,那么这个方向是很重要的。 也就是,反过来看,如果在某个方向上,每一个向量大小都很接近,那么如果不考虑这个方向,也就是去掉这一维的数据,对我们分析这1000个点并没有多大的影响。所以,“损失最小”对应着“差异最小”。 那么具体怎么做呢? 这里是两种常用的方法: SVD分解和EIG分解(特征值分解)。 共同点在于先从数据得到一个矩阵M,M的特征值个数对应着数据的维度,特征值越大那么对应的这一维越重要,也就是“差异越大”。 SVD分解, matlab sub_input_data = (input_data – repmat(mean(input_data),count,1))/sqrt(count-1); [U,S,V] = svd(sub_input_data); % First out_dim columns as PCA bases pcaV = V(:,1:out_dim); output_data = input_data * pcaV; EIG分解, matlab mean_input_data = mean(input_data); sub_input_data = input_data – repmat(mean_input_data, count,1); mean_mat = sub_input_data’ * sub_input_data ./ (count […]