Categories

Calendar

December 2010
M T W T F S S
« Nov   Jan »
 12345
6789101112
13141516171819
20212223242526
2728293031  

2010 关于

去年写总结的时候用了孙燕姿的一首歌为题,今年继续吧。《关于》这首歌是这么唱的:

关于 生活的选择题
答案在风里

这一年似乎是碰到许许多多“生活的选择题”吧,所谓人生的抉择,似乎到头来还是随心就好呢!另外还有就是这个歌的前奏是闹铃声,所以一直被我用来做手机上的起床闹铃了。

年年岁岁岁岁年年,又是当你还没有习惯 2010 这样书写日期的时候,这一年就已经过去了。实际上这一年发生了很多事情。不知从何说起,但是纵观这一年,大概主要线索变成了出国的事吧,且不再论选择出国的原因了,但是既然选择了要念 PhD ,面临的许许多多的选择题,答案就变了。

GRE 和机器学习

其实是在之前复习 GRE 的时候突然想到的一些好玩的事情,只是一直没有时间写出来,今天圣诞节,决定抽空把它写了。先祝大家圣诞快乐!

但凡是考过 GRE 的同学都知道,复习过程是很痛苦的。不过现在是信息时代,找资料确实很方便,除了各种复习材料之外,网上也不乏各种复习方法总结建议之类的,其中甚至还有帮你把每天的复习细节都具体安排好了的。当然其中也有许多很好的建议和经验,但是无论如何还是自己才知道什么方法适合自己啊。所以闲暇的时候我自己也在想,这个过程究竟是怎么一回事,后来越来越觉得和机器学习其实有相当多的地方。

最典型的就是类比反义了,GRE 里的类比就是给一个词对,让你分析出这两个词之间的关系,然后类比这个关系,在 5 个选项里找出同样关系的词对;反义则要简单得多,就是给一个词,找到它的反义词。其实是很简单的问题,我曾经尝试了一下,如果看着翻译过来的中文做题的话,错误率可以很小,所以最大的瓶颈其实就在词汇量了,词汇也应该是 GRE 笔试复习过程中最大的坎。一般复习方法分为两种,一种是被红宝书,或者其他各种“宝书”,甚至还有看字典的,另外一种则是突击看诸如“猴哥类反”之类的往年题目的正确答案列表,以及最近几年的机经之类的。

巨大的 Matlab 存储数据

好吧,我的标题越来越土了,本来想取个“XX之迷”或者“走进科学”啥的,不过其实是个小问题。总之,最近我在用 matlab 跑一些实验的时候,保存的结果比较大,其实也不算太大,就几百兆,但是由于有很多个这样的文件,所以占用空间还是比较大的,而且几百兆的 .mat 文件每次 load 进来画个图之类的也要等半天,非常不方便。于是我就想能不能有方法处理一下。

一开始我以为是因为我存储的数据里有一些位图,所以才会比较大,于是我写了一个工具来将位图压缩了一下,发现单张图片即使是无损 JPEG 压缩也可以变得比原来小很多,于是赶紧用来处理原来存储的文件,结果发现处理之后基本上没有任何改观。由于很久没有遇到这么神奇的“bug”了,我比较兴奋,把代码相关的地方都检查了一遍,发现其中有一个中间计算结果作为 cache 放在一个 struct 的 field 里,而这个 cache 理论上是可以丢掉的(虽然要再算一遍很耗时,但是基本上不会再重跑这个实验了),于是我果断把它咔嚓掉。再一运行,保存……结果发现居然一丁点改观都没有!

更为诡异地是,我用 whos 看 matlab 里那个 struct 占用的空间,得到的结果其实是很小,但是当我 save 它到文件的时候,它就莫名其妙地占用了大量空间。 -.-bb 我用一个赶紧的 matlab workspace 把这个文件加载进来,逐一删掉其中的变量做测试。

其实一开始我也比较怀疑其中的一个 function_handle 的 field ,我在想不会 matlab 聪明到为了保证 function handle 下次加载进来能够运行,把所有相关的代码和引用到的代码也一应打包了吧?-.-bb 但是 Matlab 的文档说得很清楚就是在其他地方 load function handle 的时候,如果原来的代码文件不存在或者被修改过的话,就会发生 unexpected 结果。但是呢,当我删去 struct 的那个 function handle 的时候,竟然真的就瞬间从几百兆变成几兆了。

虽然是大跌眼镜,但是我突然一下子又想明白了。原来那个 function handle […]