厦门之行

2017年12月7日~13日,打着参加“第三届全国质谱分析学术报告会”的旗号,实验室一行11人开启了为期一周的厦门之旅。有关学术交流的总结报告,已经在实验室内部分享了,这篇博客还是来聊聊吃喝玩乐的事吧:)

第一次乘坐飞机

本次出行分为飞机组和火车组,大部队说飞机不安全要坐火车,我因为想体验一下乘坐飞机的感受,于是选择了飞机组。第一次坐飞机,体验有三点:1)快。从北京到厦门,横跨整个中国,只花了3个小时,真的好快,除去吃午餐等时间,连一部电影都没看完!2)噪。起飞和降落的时候噪声特别大,平飞的时候噪声也不小,而且快要到目的地时,会有短暂的耳胀,孙老师说第一次坐飞机的人好像都会出现耳胀的情况。还有就是有时候飞机比较颠簸,放在桌子上的水都快晃出来了。3)美。我因为第一次坐飞机,特地选了一个靠窗的位置,想体验一把俯瞰神州大地的感觉。从窗户往下看时,地形地貌和谷歌卫星地图一摸一样,窗外的云就像一朵朵棉花糖,很漂亮,很像各种神话剧中的天庭。

飞机上不让开手机,这是在北京首都国际机场起飞前抓拍的照片,以后坐飞机记得带相机

Continue reading

逻辑回归之Python应用实例

上一篇博客主要介绍了逻辑回归的理论知识,这篇博客咱们用Python机器学习包sklearn中的LogisticRegression做一个分类的实例。

数据还是学生样本,只有两个特征,分别是两门课的分数score1和score2,类标号y表示这个学生是否能被录取。先上分类效果图:

Continue reading

初探逻辑回归

最近实验室在组织学习NG的机器学习视频,我也跟进了一下。讲到逻辑回归那一课,一直想不明白,逻辑回归到底是怎样分类的?逻辑回归的分类面在哪里?逻辑回归有像SVM的max margin那样清晰的推导过程吗?为什么需要Sigmoid函数?今天就让我们来一窥逻辑回归的始末。

假设有一堆学生样本,为了简单起见,只有两个特征,分别是两门课的分数score1和score2,类标号y表示这个学生是否能被录取。可视化如下图,黑点表示y=1即被录取,红点表示y=0即未被录取,可以看到黑点处在score1和score2都比较高的区域。我们的任务就是给定这些训练样本,需要确定一个分类面来划分这两类数据。

Continue reading

2017年国庆旅行——郑州、杭州

今年国庆假期连着中秋,加起来有8天时间,考虑到上半年忙着找工作,太累了,打算利用这个假期好好放松一下。

一、行程规划

9月份的某个周末,规划好行程,制定了人生第一份独自出游的计划。整个过程只花了一天的时间,包括景点规划、住宿、车票购买。其实9月初就在脑海中规划这个事情,当时想的还是2个人同行,但是中间遇到了一些事情,最终只能一个人出游。一个人的话,不用考虑太多,为了节省路上的时间,全程购买高铁票,唯独从杭州回北京的高铁票没有了,幸运的是利用分流抢票软件抢到了一张硬座。住宿方面,一个人住青旅是再好不过了,既便宜、又可以遇到有意思的驴友。国内正规青旅可以在YHAChina上预定,我就是在这个网站上预定了杭州荷方青年旅社。没有在YHA上注册的青旅,可以通过booking.com预定,booking的优势是预定不收费,入住当天前取消也不收费,很不错,我就是在这个网站上预定了郑州的畅旅太空舱宾馆,不过到店之后老板建议我取消网站上的预定,进行线下支付,可以便宜几块钱。。。

Continue reading

Gperftools性能分析工具使用教程

上一篇博客简单介绍了Linux平台下不同性能分析工具的特点,最后是Google出品的gperftools胜出。今天我们将举一个用gperftools对链接库进行性能分析的例子。

假设我们创建了一个TestGperftools项目,其中包括一个动态链接库模块complex和主程序main,build文件夹用于存放动态链接库和可执行程序,文件结构如下所示。

czl@ubuntu:~/czl/TestGperftools$ tree
.
├── build
├── complex
│   ├── complex.cpp
│   ├── complex.h
│   └── Makefile
├── main
│   ├── main.cpp
│   └── Makefile
└── Makefile

3 directories, 6 files

Continue reading

Linux性能分析工具简介

这半年一直在研究pLink 2的加速策略,了解了相关的性能分析工具,现记录如下。

对软件进行加速的技术路线一般为:首先对代码进行性能分析( performance analysis,也称为 profiling),然后针对性能瓶颈提出优化方案,最后在大数据集上评测加速效果。所以进行性能优化的前提就是准确地测量代码中各个模块的时间消耗。听起来很简单,不就是测量每行代码的运行时间吗,直接用time_t t=clock();不就好了,但是事情并没有那么简单。如果只进行粗粒度的性能分析,比如测量几个大的模块的运行时间,clock()还比较准确,但是如果测量的是运算量比较小的函数调用,而且有大量的小函数调用,clock()就不太准确了。

比如下面的一段代码,我最开始的性能分析方法是在fun1()~fun3()前后添加time_t t=clock(),然后作差求和的。但是3个fun()加起来的时间居然不等于整个while循环的时间,有将近50%的时间不翼而飞了!

while(true) {
	if(fun1()) {
		for(int i=0;i<k;++k) {
			if(flag1) {
				fun2();
			}
		}
	} else {
		fun3();
	}
}

一种可能是while循环以及内部的for循环本身占用了较多的时间,但是好像不太可能呀。还有一种可能是clock()测量有误,time_t只能精确到秒,clock_t只能精确到毫秒,如果一次fun*()的时间太短,导致一次测量几乎为0,那么多次的while和for循环调用累加的时间也几乎为0,导致实际测量到的fun*()时间远小于真实时间。所以自己用代码进行性能分析可能会有较大的误差,最好借助已有的性能分析工具。 Continue reading

2016年终总结

2017农历新年的钟声都已经敲响了,我这2016的年终总结才开始动笔。

2016年,经历了很多,也成长了很多,遇到了很多曾经以为只会出现在电视剧中的场景,令人开始怀疑这个世界。前几天在朋友圈看到一个同学发的状态,觉得很适合作为这篇年终总结的开端。(同学你要是觉得被侵权了,告诉我,我立马删掉:-))

每个家庭的故事都会是一部长篇史诗。曾经总以为很多情节只会出现在电视剧中,现实的生活很是平淡无味,没有任何波澜,偶尔甚至还会抱怨一下自己不是故事的女主角,其不知现实的生活相比于电视剧,往往是有过之而无不及。

今天哥哥来电话了,从“天津”,一个美丽的谎言,一直在继续,还会坚持很久...

奶奶很开心...

——by angel

Continue reading

电动汽车加电站

今天中午和超哥在食堂吃饭的时候聊起了电动汽车加电站的问题,很有意思。

超哥现在开的是一辆电动汽车,他说目前也挺满意的,只要在北京市内开,几乎没问题,充电桩到处都有,马力也足,开起来没有任何噪声。唯一的问题是需要每天充电,去到稍微远一点的京郊可能会电量不足。

然后就讨论到目前电动汽车的瓶颈,主要还是在电池上,一个是续航时间短,另一个是充电时间慢。 Continue reading

香山游记

2016年11月5日,雾霾重度污染,2~18℃。

噩梦,6点多被惊醒,7点起。

洗漱完毕,填写周报和各种评价,8:30吃早餐,9点到达保福寺桥南,看到630就在我前脚走了,等待15分钟上车。

车上昏睡一个小时,10:15到达香山公园,10元门票,10:30正式开始爬山。

singledouble

虽然是雾霾天,游客却熙熙攘攘,大多三两成群,唯独我孤身一人。 Continue reading

最怕空气突然安静

最怕空气突然安静
最怕朋友突然的关心
最怕回忆突然翻滚绞痛着不平息
最怕突然听到你的消息

想念如果会有声音
不愿那是悲伤的哭泣
事到如今终於让自已属於我自已
只剩眼泪还骗不过自己

突然好想你你会在哪里
过的快乐或委屈
突然好想你突然锋利的回忆
突然模糊的眼睛

我们像一首最美丽的歌曲
变成两部悲伤的电影
为什麽你带我走过最难忘的旅行
然後留下最痛的纪念品

我们那麽甜那麽美那麽相信
那麽疯那麽热烈的曾经
为何我们还是要奔向
各自的幸福和遗憾中老去

突然好想你你会在哪里
过的快乐或委屈
突然好想你突然锋利的回忆
突然模糊的眼睛

最怕空气突然安静
最怕朋友突然的关心
最怕回忆突然翻滚绞痛着不平息
最怕突然听到你的消息
最怕此生已经决定自己过
没有你却又突然听到你的消息
Continue reading