粥客11

发信人: ouz (Ouz躺着真舒服啊), 信区: Joke
标 题: 粥客11
发信站: 水木社区 (Mon Dec 5 11:57:46 2016), 站内

(内容来源于网络)
1.晚饭过后,女友神秘兮兮的问:“老公你要奶油的,柠檬的,薄荷的还是原味的?” 以为是什么呢,就说:“原味的吧。”“那我今天晚上就不洗澡了”

2.记得小时候,上小学是考试考不及格的几个,统统请家长,我害怕挨揍,没办法把我奶奶硬拉到学校。同桌更牛逼,把他爸的奶奶带到学校,90多了,走路都颤颤威威,真忘不了学校老师校长像孙子一样说好话赶紧让老人家回。

3.我去算命:“大师,你看我以后能当个什么呀?局长?还是村长?”大师掐指一算:“小伙子,你当个家长都难!”

4.小学三年级以前念的是蒙汉分班的学校,斗争非常激烈,课间摔起跤来汉族班都是靠我撑着才不会全军覆没。转学的时候填户口才知道自己其实是蒙古族,那是一个夏日午后,十岁的我体会了契丹人萧峰的痛。

5.中学时候放学路上,被几个混混截住。 我急中生智,对着一位路过的陌生大叔叫道:“二叔,有人欺负我!” 哪知混混甚是嚣张,连大人都不怕,把大叔与我都揍了一顿。 混混们走后,大叔为了解气,又把我揍了一顿。

6.刚刚在便利店,看到个三四岁大的小男生要吃薯片,家长不给买还要,他妈妈有点生气说,你再这样我就不喜欢你了!结果就看到那个小男生说,那没关系,我喜欢你呀,不管你喜不喜欢我,我都会一直一直喜欢你……然后我就看到他妈一句话都不说去拿了四五包乐事……

7.初中时借了张光盘,一次看过忘关DVD。等到全家一起吃饭时,刚一打开电视……我妈迅疾捂住我的眼睛,转身就给我我爸一巴掌。我爷爷埋着头淡定地:我买的……

8.村中男人大多出门打工,小段家里穷的娶不上媳妇,却多年坚持在家务农!年底,村里出去打工的男人全回来了,大家凑钱给小段娶了媳妇……

9.今年是考试作弊被判刑的第一年,刚进监狱,狱友就问小伙儿犯什么事儿了进来了,小伙儿犹豫半天,说出来你们可能不信! 狱友问:“什么事啊?有什么不相信的,不就是杀人放火,偷抢拐骗么?” “我是通过考试进来的!”

10.老公:“老婆,我到家楼下啦!”老婆:“你不是说今天出差吗?”老公:“临时取消啦!你吃饭了吗?用我买点什么上去吗?”老婆:“我想吃水煮鱼啦!你去饭店帮我买一份吧!”老公:“好,这是我最后一次帮你买水煮鱼,再有下次,我们就离婚…”

粥客10

发信人: ouz (Ouz躺着真舒服啊), 信区: Joke
标 题: 粥客10
发信站: 水木社区 (Sun Dec 4 18:24:18 2016), 站内

【内容来源于网络】

1.一个人出差,晚上去宾馆住,睡到一半听到外面有个女人在砸对面的房门,好像是捉奸!但是那个门一直不开。那女的喊:你不开是吧,那我也马上绿了你!我马上起来把门开了!!!

2.跟前女友分手后没多久,又交了一个新女朋友。有次去超市买好东西回家后感觉口渴了,就拿出酸奶喝,第一杯喝完感觉不过瘾,就又用那根吸管插了第二杯,女友看见后皱着眉头说:“真恶心,你有没有顾及第二杯酸奶的感受!”额….我特么当时就懵逼了..

3.三个盲人没见过大象,决定去摸一摸。第一个摸到大象的鼻子,把玩了一会,说:“大象是个柔软的棒子。”第二个摸到象牙,抚弄了一会,说:“你胡扯,大象分明是个坚硬的棒子。”第三个盲人说:“还是让我来吧。”过了一会他说:“你们俩说得都对,大象是个可软可硬的棒子。”

4.昨天第一次去未来老丈人家,被灌了个不醒人事!今早起床发觉,女友一直死板着脸,细问,原来昨晚未来老丈人把我灌醉,问我:“你当初为什么看上我女儿?”我就不停重复回答三个字:“大咪咪……”

5.佛祖想减肥又不好意思说,为了减肥,佛祖吃素,自称是为了不杀生。为了减肥,佛祖走遍四方去锻炼,自称是为了弘扬佛法。为了减肥,佛祖割肉喂鹰,自称是有好生之德。这么多狠招都用了,当他发现猴哥整天湖吃海喝,还是比他瘦时,怒了,压了猴哥五百年。后来佛祖发现猪八戒长的比他帅,于是打入凡间,掉入猪圈。

6.今天女朋友第一次要来我家,一大早起来刮刮胡子,整理房间,换了床单,在床头备了手纸 ,然后洗剪吹,顺便买了一大包零食,回家坐等女朋友,刚好门铃响了,我去开门的瞬间,脑海中出现了大大的“草” 心想尼玛送不送打气筒啊!

7.某男在加油站呆了5个小时,每辆车来了都在旁边看着加油。 加油站服务员看不过去了:先生需要帮助吗? 答曰:没事,你忙你的,我在戒烟呢。

8.一对恋人去逛超市,走到进口时前台有一个新款的会走路的布娃娃,售货员过来对女孩说:你说’嗯’娃娃就迈出右腿,你说’啊’娃娃就迈出左腿。女孩十分喜欢于是男友就将娃娃买下送给女孩。恋人高兴的回了家,女孩把娃娃放在了自己的床头..结果第二天早上起来布娃娃离家出走了!

粥客8

发信人: ouz (Ouz躺着真舒服啊), 信区: Joke
标 题: 粥客8
发信站: 水木社区 (Fri Dec 2 09:08:19 2016), 站内

【内容来源于网络】
1、絮絮很漂亮,而她男友却很一般。问她:怎么会跟他在一起?絮絮一脸幸福地憧憬着:我和他高中时是同桌,有次低头捡东西,看到他把手放在桌角上,结果抬头时正好碰到他手上……

2、保姆的嗓门很大,于是主人就叮嘱,今晚要来的都是很有身份的人,你说话一定要小声一点。吃完饭后,主人跟几个客人在玩牌,小保姆做完事想睡觉,于是就走到主人耳边小声道:“我先去睡了。”

3、姐姐出差,我去她家帮着照看外甥,晚上给外甥讲小蝌蚪找妈妈的故事,他很快睡着了。忽然姐夫进来,一边脱我衣服一边说:Linda,我给你讲个故事。我急了:姐夫,讲啥故事还要脱衣服?“小蝌蚪找妈妈的故事。”

4、小学语文老师,今天批改作业时发现了一张纸条,上面写着:老师,我怀了男朋友得孩子,请不要开除我。这太让我震惊了,现在的学生到底是怎么了?都五年级了还分不清“的”、“地”、 “得”的用法!

5、这几天手头紧,没钱吃饭了,于是找一女神请她吃饭,饭后向她表白。 果然她拒绝我了,然后我一生气就走,留下一脸茫然的她,付了饭钱。

6、初中时候同桌裤裆开了,他妈给他缝上了,第二天上午第四节课我俩唠嗑,他低头拽裤裆上出来的线头,我就看他拽的线头顿了一下,然后出来了一根银光闪闪的长针,当时同桌的脸都绿了,他就这么穿了一上午啊。

7、一哥们刚期满释放出来时挺清贫的,后来见他混的还挺好。于是向他请教,他支支吾吾道:“就是没事卖卖花啦……”

8、以前记得和初恋女友做公交车我开了瓶营养快线跟她喝 ,然后我舔了一下瓶盖 没舔干净 然后我初恋对我说我感觉我们不合适还是分手吧。事后我一直苦思冥想到底是为什么。。

9、最近我在公司风生水起,老婆问:“老公,本来你升职应该开心的,可我怎么感觉越来越没安全感呢?你会不会有钱就不要我了?”我笑道:“放心吧,风雨同舟你作陪,荣华富贵伴你随。”老婆开心的抱着我:“你要记住,糟糠之妻不可欺,喜新厌旧遭雷劈!”刚说完,外面突然雷雨交加,老婆脸色苍白的钻进被窝里……

10、一男总感觉上厕所不对劲,就去看医生。
医生问:尿尿分岔吗?
男:不分岔。
医生:那就没事。
男哦了一声就往外走,突然想起什么来扭头又问医生:喷花算不算?

User space 与 Kernel space

学习 Linux 时,经常可以看到两个词:User space(用户空间)和 Kernel space(内核空间)。

简单说,Kernel space 是 Linux 内核的运行空间,User space 是用户程序的运行空间。为了安全,它们是隔离的,即使用户的程序崩溃了,内核也不受影响。

Kernel space 可以执行任意命令,调用系统的一切资源;User space 只能执行简单的运算,不能直接调用系统资源,必须通过系统接口(又称 system call),才能向内核发出指令。


str = "my string" // 用户空间
x = x + 2
file.write(str) // 切换到内核空间

y = x + 4 // 切换回用户空间

上面代码中,第一行和第二行都是简单的赋值运算,在 User space 执行。第三行需要写入文件,就要切换到 Kernel space,因为用户不能直接写文件,必须通过内核安排。第四行又是赋值运算,就切换回 User space。

查看 CPU 时间在 User space 与 Kernel Space 之间的分配情况,可以使用top命令。它的第三行输出就是 CPU 时间分配统计。

这一行有 8 项统计指标。

其中,第一项24.8 us(user 的缩写)就是 CPU 消耗在 User space 的时间百分比,第二项0.5 sy(system 的缩写)是消耗在 Kernel space 的时间百分比。

随便也说一下其他 6 个指标的含义。

  • ni:niceness 的缩写,CPU 消耗在 nice 进程(低优先级)的时间百分比
  • id:idle 的缩写,CPU 消耗在闲置进程的时间百分比,这个值越低,表示 CPU 越忙
  • wa:wait 的缩写,CPU 等待外部 I/O 的时间百分比,这段时间 CPU 不能干其他事,但是也没有执行运算,这个值太高就说明外部设备有问题
  • hi:hardware interrupt 的缩写,CPU 响应硬件中断请求的时间百分比
  • si:software interrupt 的缩写,CPU 响应软件中断请求的时间百分比
  • st:stole time 的缩写,该项指标只对虚拟机有效,表示分配给当前虚拟机的 CPU 时间之中,被同一台物理机上的其他虚拟机偷走的时间百分比

如果想查看单个程序的耗时,一般使用time命令。

程序名之前加上time命令,会在程序执行完毕以后,默认显示三行统计。

  • real:程序从开始运行到结束的全部时间,这是用户能感知到的时间,包括 CPU 切换去执行其他任务的时间。
  • user:程序在 User space 执行的时间
  • sys:程序在 Kernel space 执行的时间

usersys之和,一般情况下,应该小于real。但如果是多核 CPU,这两个指标反映的是所有 CPU 的总耗时,所以它们之和可能大于real

[参考链接]

(完)

文档信息

粥客7

发信人: ouz (Ouz躺着真舒服啊), 信区: Joke
标 题: 粥客7
发信站: 水木社区 (Thu Dec 1 13:30:47 2016), 站内

(内容来源于网络)
1、今天早上去早餐铺买早餐,老板不在,她10岁的女儿在,我就逗她小笼包几角钱一笼,她想了好半天说35角一笼!那给我拿685分钱的包子,说完给她10块钱,没想到她直接往屋里喊:爸,有人来砸场子了,你快来……他爸拿着擀面杖冲出来~别问后来怎么样了,我鞋都跑丢了一只……

2、吃饭的时候,老公夹了一块鸡皮给女儿。女儿:爸爸,你为什么夹给我?老公:因为鸡皮吃了会很漂亮。女儿:那你为什么不夹给妈妈啊?老公:因为妈妈不能再漂亮了,再漂亮的话爸爸就不放心了。

3、女屌:“为什么你胸那么挺我的那么平啊?”
女神:“多揉揉多挤挤。”
女屌:“我每天都揉了也挤了啊,可它就是不挺。”
女神:“谁跟你说你自己动手的?”

4、一兄弟因为偷车进了监狱,他出狱后我问他:在里面还好吗,有没有受教育?这哥们立马兴奋起来了说:你别说,真受教育了,里面高手众多,我开锁技术又提高了一个层次。卧槽,感情您去监狱进修去了!

5、好久没有回家吃饭了,今天晚上妈妈做的到格外好吃,我吃了一碗,然后拿着空碗不好意思去盛饭。正在这时,爸爸对妈妈喊话了:还不快给闺女盛一碗,同时安慰我说:闺女在外面装就可以了,家里都是自己人。

6、本人苦命高三党汉纸一枚,顶着巨大的压力,冒着巨大的危险进行早恋…有一次下雨,小女友撒娇说冷,遂脱下外套借她穿了,过了一星期拿回来的,也没看就拿回家了。第二天,老妈给我洗衣服,在口袋里翻出了两块姨妈巾…………我脸绿了,我妈脸黑了!!

7、公司开会,老板说道:“我希望每天把你们叫醒的不是闹钟,而是梦想!”
同事喃喃自语:“我希望把我叫醒的是老婆…”

8、有一天,看到一个小女孩问身边的小男孩:“你说你要做我的男朋友,那你都会些什么?” 小男孩说:“我会爱你。” 小女孩又问道:“那你有什么不会的?” 小男孩正经说道:“我永远不会离开你。” 说完,两个人就手牵手去买糖果了。

9、一美国老太找到一张200年前手写存单,老祖宗在瑞士银行存了100美元。老太去取钱,即报总行,总行查到该存款底账。总行找到老太,举行仪式,给老太兑现50万并奖励100万美元。行长说:“钱存在我们银行,只要地球在,你的钱就在。”如果在中国,银行会说:对不起,我们有规定,得您祖宗本人来领。

恐怖joke,和那些妖艳的joke画风真的不一样 zz

发信人: census (伪读者), 信区: Joke
标 题: 恐怖joke,和那些妖艳的joke画风真的不一样 zz
发信站: 水木社区 (Wed Nov 30 14:16:15 2016), 站内

晚上,妈妈哄儿子睡觉。

儿子忽然说:妈妈,床底下有个孩子哦。

妈妈下床一看,儿子在床底下说:妈妈,床上有个孩子哦。

然后妈妈把双胞胎兄弟打了一顿

========================

一人晚上饭局完后走夜路回家,总觉得左眼余光看到有白影,立刻看过去,什么都没发现,但没走几步,又感觉有白影飘过,但周围看,还是没有发现。

回到家,他慌张地跟家人说这件事,家人幽幽地说:

你眼角有饭粒

========================

他有一个三岁的儿子,有天他发现儿子在窗边边挥手边讲“伯伯再见”本来他不以为然,以为儿子是和街上的伯伯说话。但一连几天同一时间儿子都这么做,他越想越害怕……于是问儿子和谁说再见啊!儿子说:“伯伯呀”他颤抖的双手抓着儿子问到“外面没人啊,哪个伯伯呀?儿子回答:

太阳伯伯呀

========================

我有一次很晚回家,因为路边很乱,天空没有月亮。

忽然发现旁边的砖头上,蹲着一只猫。

我看着那只猫,那只猫也直勾勾的盯着我,眼睛大得出奇,足有一般猫3倍的大小。我隐约觉得有点不对劲,更可怕的是,我发现了这只猫有一个我不能忽视的地方。

因为那只猫它没有嘴!!!!我反复看了很多次,它真的没有嘴!!!
因为那只猫它没有嘴!!!!我反复看了很多次,它真的没有嘴!!!
因为那只猫它没有嘴!!!!我反复看了很多次,它真的没有嘴!!!

我大惊失色:

是谁把hellokitty丢在这里的?

========================

有个人梦魇缠身,每晚都会梦到可怕的东西,吓得要死,四处求医不得治,日渐憔悴。他听说一个大师很厉害,于是上门求医。诉说病情之后,大师微微点头,抬起手 臂,动了动手指,然后轻描淡写道:“可以了,回去吧。”之后,他依旧每夜梦到可怕的事,但是发生之前都会飘过一行字:

“前方高能预警。”

========================

[转载]为什么中国叫China?看完我竟无力反驳…

发信人: yuenaibin (哦了斌哥), 信区: Joke
标 题: [转载]为什么中国叫China?看完我竟无力反驳…
发信站: 水木社区 (Wed Nov 30 13:02:45 2016), 站内

民以食为天,说的没错中国人到底有多爱吃?一起来感受一下:
01:
中国为什么叫 china?
分开念就对了 (chi na)
02:
全世界这么多大学,却只有中国的大学门口,才会有小吃一条街。
03:
不论台湾,还是西藏新疆,
我们坚决捍卫国家领土主权,一寸一厘的国土都不能让,谁知道上面能长出什么好吃的来!
04:
什么事情都爱用吃来形容:工作不叫工作,那叫饭碗;开除不叫开除,叫炒鱿鱼。嫉妒叫做吃醋,占便宜叫吃豆腐,被起诉叫吃官司,拿人好处叫吃回扣,没遇着人叫吃闭门羹。 没钱了都想着用吃土、喝西北风来形容!你说,中国人爱不爱吃?
05:
作为入侵物种,小龙虾在中国可谓是颜面扫地,居然沦落到要靠人工养殖才能活下去… 如果有外来物种入侵中国成功了,我确定,一定是因为它不!好!吃!
06:
这辈子,我唯一拿得起放不下的,也就只有筷子了。
07:
大学宿舍,晚上一人饿醒,
全宿舍人都跟着饿了。翻遍宿舍却又找不到吃的,
偏偏超市早就关门了。
没办法我们就把剩下的
三包板蓝根冲了,六个人分着喝了。
08:
世界上肯定不存在美人鱼这个物种,要不然历史会记下它的做法和口感。
09:
为了过春节,我们发明了水饺。为了过元宵,我们发明了汤圆。 为了过清明,我们发明了青团。为了过端午,我们发明了粽子。为了过中秋,我们发明了月饼。为了过腊八,我们发明了腊八粥…
10:
有多少人会把奶酪陷阱看成奶酪馅饼…
11:
之前有个网站说国外有个沙滩海蜇泛滥,问该怎么办。中国网友看了,表示很着急:凉拌啊!
12:
我相信,红领巾角的口感和味道,很多人都无法忘怀,我也是!
13:
关于做菜的汉字是最多的:涮、煲、烫、炙、卤、酱、蒸、煮、煎、熬,滚、汆、风、腊、熏、糟、醉,酿… 还有那一系列火字旁的汉字:炒、炝、炊、烧、爆、炸、焯、煨、烘、炖、煸、烤、灼、焗、焖、炆、烩、熘。
14:
为了一尝唐僧肉,妖怪们无偿出演了一部西游记。
15:
你知道吗?
中国有很多优秀的纪录片,
但是只有《舌尖上的中国》被挖了出来,
这就是吃货的世界。
16:
每条大街小巷,每个人的嘴里,见面第一句话,总是:
你吃饭了吗?
17:
毕竟一个小龙虾就有:麻辣、香辣、爆炒、油炸、油闷、酱爆、水煮、冰镇、卤水、茄汁、鱼香、蒜香、葱爆、椒盐、清蒸、干煸、白灼、红烧、酒香、五香、十三香…各种吃法。
18:

Deep Learning从0到0.1

以下大部分是根据我自己的学习过程来的,可以算是一种人生经验,也有可能是只适合我的。有好多人问我怎么入门,我自己都没入,所以是不想公开,能不看就不要看了。(陈老师微博转了一下,班门弄斧羞愧难当。小小服务器微卡,请见谅。)

前期准备

  1. 个人认为Linux远远优于Windows(mac 不清楚,貌似也比Windows方便一点),大二之后我没有在Windows上写过跑过代码,不清楚常用的deep learning框架能否顺利在Windows上安装。但我知道在Linux上安装theano就一个命令,GPU cuda 设置也很方便。当然,这是一个安利,可以不吃。
  2. 可以上Google,会用英文搜索。最好少看中文资料,或者粗略看中文资料有个大概印象之后仔细看英文资料。
  3. 基本的优化知识,像梯度下降法,以及随机的梯度下降法(SGD)。另外还有一些加速方法,可以看这篇博文,形象科学。
  4. 基本的机器学习知识,最起码的logistic regression。这个非常重要,可以看作是最最基本的单层神经网络,相当于平房跟金茂的关系。理解里面的sigmoid也很重要,对以后理解为什么要用tanh,relu有帮助。这个最好能自己实现,matlab也行,了解原理就好了。可以使用libsvm的数据集测试分类效果。可以参考coursera上的机器学习不过他的作业貌似封装了优化算法,最好优化算法也自己写。这可能是最艰难无趣的一步,实在不行先跳过。
  5. 一点矩阵知识,感觉知道就行,离真正用到还很远。
  6. 概率知识,只要不搞生成模型啥的如VAE这种就可以先不管。像CNN基本用不到,只要知道softmax是个什么就行了。softmax(敲黑板!)就是多类logistic regression,简单讲就是模型判定输入是属于哪个类的概率。理解了logistic regression就不难了。
  7. 最好能看一本书,能够系统的学习,Ian Goodfellow and Yoshua Bengio and Aaron Courville写的deep learning就不错。

准备这些我觉得需要2周左右,推荐几个框架,边准备边试,看看喜欢哪一个框架。


初步了解

神经网络最初的是多层感知机(MLP),就是多层的Logistic regression,coursera上的机器学习那课里也有讲到。可以跑一下thenao的代码。为什么纯MLP很少用呢?主要因为参数冗余且不符合原理。还有很多其他原因,可以在接触CNN等其他结构的网络之后慢慢理解。当然这个MLP也是很重要的,虽然这里不多谈。

最重要的是尝试,否则就是夸夸其谈不明细节。当然得选择有趣简单的东西玩。deep learning中RBM这类可能有点晦涩而且现在并不流行。我就分别举CNN,RNN,GAN中简单可行的例子。可能现在不知道这些分别是什么,后面慢慢理解。

CNN

CNN的开山鼻祖LeNetAlexNet算是最初级的CNN可以一看,毕竟里面有很多东西都过时了。但它引入的relu,pooling这些精华还一直在,所以务必看一下AlexNet的论文。这篇博文还有一些比较。简单来说,CNN就是下面的架构,很好理解,相比MLP就多了卷积pooling操作。看MLP就出现了,在这里cnn就是在提取特征,而MLP就是在提取的特征上做判别。

simple cnn
From deeplearning.net

知道这些并不有趣,要玩点直观的。我觉得最有趣的肯定是neural style,最近流行的Prisma也基于差不多的原理,如果你都懂原理你就是high level。我们在有限的计算资源下训练一个大型CNN显得非常不划算,但是用别人训练好的CNN做一些有趣的事也算是另辟蹊径来理解什么是CNN。他的paper中介绍的还算清楚。工业界是要让代码跑起来,入门的第一件事就是能跑别人的代码,管他原理不原理。如果不清楚,先跑起来再说,生成一张自己照片的风格图也很值啊,然后再慢慢了解原理。

如果了解了原理,看了源码,可以尝试修改,比如合成两张图片啥的。能做到就算完全了解了neural style的原理了。这算是入门的第二步,修改别人的代码,同时可以学习一个。牛b之后还可以想想能否通过Autoencoder来加快速度。


好像有点跳,不虚慢慢来。当了解CNN工作模式还得靠其他的东西。

还可以看看deep dream,不过看着好像有点恶心。或者看看其他流行的项目。最重要的是阅读源代码,代码是绝对正确的。书本上paper里的都是大概,很少有细节。我没怎么训练过CNN,所以没法给出更多训练时的细节。

RNN

RNN就难多了,理解LSTM花了我很久。下面两个系列帮我了很大的忙。看完绝对能理解RNN,至少知道是RNN个什么,至少知道为什么要用LSTM,GRU这些变种。看不懂可以先看个大概,跑跑代码再说,然后再看,然后再研究代码。我就这么recurrent的入门的。

  1. Recurrent Neural Networks tutorials
  2. Understanding LSTM Networks

然后是搞点有意思的。我觉得对于初学者来说,自动生成Shakespeare风格的文章或者Linux代码算有意思了吧。可以参考这篇博文和这篇paper。Github上有很多代码,如char-rnnblocks-char-rnn。原理非常非常简单,就是根据前一个字符预测下一个字符。如输入一句话”我tm怎么这么diǎo”,输出就是“tm怎么这么diǎo。”,用RNN来拟合这样一个输入输出就行了。就是以下的结构。


from colah.github.io

这篇文章比较n-gram和RNN的结果,可以看出RNN是多么diǎo。简单来说,RNN能捕获前后之间的联系,比如c代码,RNN能生成匹配的括号,而n-gram是做不到的。

static void kdb_setsinglestep(struct pt_regs *regs)
{
struct swevent_htable *swhash = &per_cpu(swevent_htable, cpu);

mutex_lock(&swhash->hlist_mutex);
swhash->online = true;
if (swhash->hlist_refcount)
swevent_hlist_release(swhash);

mutex_unlock(&show_mutex);

return 0;
}

这是RNN能做到的最简单的,而且能在自己电脑上轻松跑起来的例子。还有简单的就是曲线拟合,时序分析。如下就是用RNN拟合的,可以自己尝试用RNN来拟合sin(x)


另外还有结合CNN和LSTM生成图片描述音乐合成,很多能玩的例子,而且玩着玩着就懂了。如果没有好奇心,那可能玩了之后还是不懂。反正我玩了之后,就会想:“tmd,怎么做到的?!”,然后就开始学习一个。

GAN

Generative Adversarial Networks算高级一点的内容,也是算简单的很有意思很有前途的一块,看字面意思就知道是生成模型。比其他生成模型VAE,RBM什么的简单多了,而且原理非常简单。总的来说就是一个生成网络,一个判别网络,目标是让生成网络生成判别网络无法区分是生成的还是真实的数据,这是个对抗(adversarial)的训练过程。应用于图片可能会有点问题,因此出了Unsupervised Representation Learning with Deep Convolutional Generative Adversarial Networks(DCGAN),效果好很多,见github

GAN比较简单,网上没有满意的代码,随便写个mnist的GAN代码,稍微能看到数字。


要玩还是试试DCGAN比较好,毕竟GAN有点不完善。生成数字可能不那么有冲击力,生成人脸够diǎo了吧,详见github。更有冲击力的是结合VAE和GAN的生成网络VAE/GAN

其他

如reinforce learning, deep-Q 还没有接触。以后再谈。


略微高级

我只能说说我熟悉的deep learning的领域。

框架开发

在知道deep learning的基本知识之后就应该回馈社区。参与一些流行的年轻的框架的开发。如mxnetkerasblocks。首先可以锻炼自己阅读代码和写代码的能力,还可以了解实现细节,这对以后实现自己的奇思妙想很有帮助。个人推荐keras,文档完善,社区广泛,同时支持theano和tensorflow。这里的关系是,theano和tensorflow是两种不同类型的砖头,而keras用这两种砖头做成一些通用的部件如墙壁地板对应于deep learning中的如MLP,LSTM网络等。搞deep learning,熟悉一种框架是必须的,可以的话,需要了解其他框架,毕竟要看源码。或者更形象一点,CUDA相当于汇编语言,theano和tensorflow是c语言,keras和blocks这些框架就像Python。

研究方向

deep learning里还有很多可研究的东西。我们不关注性能,毕竟这超出能力范围。我们可以想想deep learning能干嘛。机器翻译diǎo不diǎo,我一头就栽进去了,毫不犹豫,因为这个太tm有意义太tm有意思了。哥以后不用学外语,也能精通八国语言,想想就exciting。不像CNN,机器翻译的性能还没有那么好,始终缺少一点东西,等待开发,可以看看acl的tutorial

生成模型也是非常热门的发展方向。最近出的Pixel Recurrent Neural NetworksDRAW都是很美妙的,可惜没有时间跟进。但了解一下还是可以的。

最后是大牛的最新研究进展,随时可以跟进。


总结

入门实在有点难以定义。我认为能自己写个网络就算入门了,所以要看教程、跑代码、看文档、看代码、改代码反复来。其中跑代码是稍微轻松一点,也能激发兴趣。要尝试简单的,慢慢就会复杂的了,想想现在看的英文文章也是从一个个单词积累的。
所以要尝试啊,别光看光点赞光收藏啊。

最后我们需要帮助:我们正在翻译deep learning这本书,直译版已全部翻完正在校正中,大概2周后公开。希望多多提提意见,帮忙修改修改,目前处于私密状态,在github上。

Deep Learning从0到0.5

以下大部分是根据我自己的学习过程来的,可以算是一种人生经验,也有可能是只适合我的。有好多人问我怎么入门,我自己都没入,所以是不想公开,能不看就不要看了。(陈老师微博转了一下,班门弄斧羞愧难当。小小服务器微卡,请见谅。)

前期准备

  1. 个人认为Linux远远优于Windows(mac 不清楚,貌似也比Windows方便一点),大二之后我没有在Windows上写过跑过代码,不清楚常用的deep learning框架能否顺利在Windows上安装。但我知道在Linux上安装theano就一个命令,GPU cuda 设置也很方便。当然,这是一个安利,可以不吃。
  2. 可以上Google,会用英文搜索。最好少看中文资料,或者粗略看中文资料有个大概印象之后仔细看英文资料。
  3. 基本的优化知识,像梯度下降法,以及随机的梯度下降法(SGD)。另外还有一些加速方法,可以看这篇博文,形象科学。
  4. 基本的机器学习知识,最起码的logistic regression。这个非常重要,可以看作是最最基本的单层神经网络,相当于平房跟金茂的关系。理解里面的sigmoid也很重要,对以后理解为什么要用tanh,relu有帮助。这个最好能自己实现,matlab也行,了解原理就好了。可以使用libsvm的数据集测试分类效果。可以参考coursera上的机器学习不过他的作业貌似封装了优化算法,最好优化算法也自己写。这可能是最艰难无趣的一步,实在不行先跳过。
  5. 一点矩阵知识,感觉知道就行,离真正用到还很远。
  6. 概率知识,只要不搞生成模型啥的如VAE这种就可以先不管。像CNN基本用不到,只要知道softmax是个什么就行了。softmax(敲黑板!)就是多类logistic regression,简单讲就是模型判定输入是属于哪个类的概率。理解了logistic regression就不难了。
  7. 最好能看一本书,能够系统的学习,Ian Goodfellow and Yoshua Bengio and Aaron Courville写的deep learning就不错。

准备这些我觉得需要2周左右,推荐几个框架,边准备边试,看看喜欢哪一个框架。

初步了解

神经网络最初的是多层感知机(MLP),就是多层的Logistic regression,coursera上的机器学习那课里也有讲到。可以跑一下thenao的代码。为什么纯MLP很少用呢?主要因为参数冗余且不符合原理。还有很多其他原因,可以在接触CNN等其他结构的网络之后慢慢理解。当然这个MLP也是很重要的,虽然这里不多谈。

最重要的是尝试,否则就是夸夸其谈不明细节。当然得选择有趣简单的东西玩。deep learning中RBM这类可能有点晦涩而且现在并不流行。我就分别举CNN,RNN,GAN中简单可行的例子。可能现在不知道这些分别是什么,后面慢慢理解。

CNN

CNN的开山鼻祖LeNetAlexNet算是最初级的CNN可以一看,毕竟里面有很多东西都过时了。但它引入的relu,pooling这些精华还一直在,所以务必看一下AlexNet的论文。这篇博文还有一些比较。简单来说,CNN就是下面的架构,很好理解,相比MLP就多了卷积pooling操作。看MLP就出现了,在这里cnn就是在提取特征,而MLP就是在提取的特征上做判别。

simple cnn
From deeplearning.net

知道这些并不有趣,要玩点直观的。我觉得最有趣的肯定是neural style,最近流行的Prisma也基于差不多的原理,如果你都懂原理你就是high level。我们在有限的计算资源下训练一个大型CNN显得非常不划算,但是用别人训练好的CNN做一些有趣的事也算是另辟蹊径来理解什么是CNN。他的paper中介绍的还算清楚。工业界是要让代码跑起来,入门的第一件事就是能跑别人的代码,管他原理不原理。如果不清楚,先跑起来再说,生成一张自己照片的风格图也很值啊,然后再慢慢了解原理。

如果了解了原理,看了源码,可以尝试修改,比如合成两张图片啥的。能做到就算完全了解了neural style的原理了。这算是入门的第二步,修改别人的代码,同时可以学习一个。牛b之后还可以想想能否通过Autoencoder来加快速度。

好像有点跳,不虚慢慢来。当了解CNN工作模式还得靠其他的东西。

还可以看看deep dream,不过看着好像有点恶心。或者看看其他流行的项目。最重要的是阅读源代码,代码是绝对正确的。书本上paper里的都是大概,很少有细节。我没怎么训练过CNN,所以没法给出更多训练时的细节。

RNN

RNN就难多了,理解LSTM花了我很久。下面两个系列帮我了很大的忙。看完绝对能理解RNN,至少知道是RNN个什么,至少知道为什么要用LSTM,GRU这些变种。看不懂可以先看个大概,跑跑代码再说,然后再看,然后再研究代码。我就这么recurrent的入门的。

  1. Recurrent Neural Networks tutorials
  2. Understanding LSTM Networks

然后是搞点有意思的。我觉得对于初学者来说,自动生成Shakespeare风格的文章或者Linux代码算有意思了吧。可以参考这篇博文和这篇paper。Github上有很多代码,如char-rnnblocks-char-rnn。原理非常非常简单,就是根据前一个字符预测下一个字符。如输入一句话”我tm怎么这么diǎo”,输出就是“tm怎么这么diǎo。”,用RNN来拟合这样一个输入输出就行了。就是以下的结构。


from colah.github.io

这篇文章比较n-gram和RNN的结果,可以看出RNN是多么diǎo。简单来说,RNN能捕获前后之间的联系,比如c代码,RNN能生成匹配的括号,而n-gram是做不到的。

static void kdb_setsinglestep(struct pt_regs *regs)
{
struct swevent_htable *swhash = &per_cpu(swevent_htable, cpu);

mutex_lock(&swhash->hlist_mutex);
swhash->online = true;
if (swhash->hlist_refcount)
swevent_hlist_release(swhash);

mutex_unlock(&show_mutex);

return 0;
}

这是RNN能做到的最简单的,而且能在自己电脑上轻松跑起来的例子。还有简单的就是曲线拟合,时序分析。如下就是用RNN拟合的,可以自己尝试用RNN来拟合sin(x)

另外还有结合CNN和LSTM生成图片描述音乐合成,很多能玩的例子,而且玩着玩着就懂了。如果没有好奇心,那可能玩了之后还是不懂。反正我玩了之后,就会想:“tmd,怎么做到的?!”,然后就开始学习一个。

GAN

Generative Adversarial Networks算高级一点的内容,也是算简单的很有意思很有前途的一块,看字面意思就知道是生成模型。比其他生成模型VAE,RBM什么的简单多了,而且原理非常简单。总的来说就是一个生成网络,一个判别网络,目标是让生成网络生成判别网络无法区分是生成的还是真实的数据,这是个对抗(adversarial)的训练过程。应用于图片可能会有点问题,因此出了Unsupervised Representation Learning with Deep Convolutional Generative Adversarial Networks(DCGAN),效果好很多,见github

GAN比较简单,网上没有满意的代码,随便写个mnist的GAN代码,稍微能看到数字。

要玩还是试试DCGAN比较好,毕竟GAN有点不完善。生成数字可能不那么有冲击力,生成人脸够diǎo了吧,详见github。更有冲击力的是结合VAE和GAN的生成网络VAE/GAN

其他

如reinforce learning, deep-Q 还没有接触。以后再谈。

略微高级

我只能说说我熟悉的deep learning的领域。

框架开发

在知道deep learning的基本知识之后就应该回馈社区。参与一些流行的年轻的框架的开发。如mxnetkerasblocks。首先可以锻炼自己阅读代码和写代码的能力,还可以了解实现细节,这对以后实现自己的奇思妙想很有帮助。个人推荐keras,文档完善,社区广泛,同时支持theano和tensorflow。这里的关系是,theano和tensorflow是两种不同类型的砖头,而keras用这两种砖头做成一些通用的部件如墙壁地板对应于deep learning中的如MLP,LSTM网络等。搞deep learning,熟悉一种框架是必须的,可以的话,需要了解其他框架,毕竟要看源码。或者更形象一点,CUDA相当于汇编语言,theano和tensorflow是c语言,keras和blocks这些框架就像Python。

研究方向

deep learning里还有很多可研究的东西。我们不关注性能,毕竟这超出能力范围。我们可以想想deep learning能干嘛。机器翻译diǎo不diǎo,我一头就栽进去了,毫不犹豫,因为这个太tm有意义太tm有意思了。哥以后不用学外语,也能精通八国语言,想想就exciting。不像CNN,机器翻译的性能还没有那么好,始终缺少一点东西,等待开发,可以看看acl的tutorial

生成模型也是非常热门的发展方向。最近出的Pixel Recurrent Neural NetworksDRAW都是很美妙的,可惜没有时间跟进。但了解一下还是可以的。

最后是大牛的最新研究进展,随时可以跟进。

总结

入门实在有点难以定义。我认为能自己写个网络就算入门了,所以要看教程、跑代码、看文档、看代码、改代码反复来。其中跑代码是稍微轻松一点,也能激发兴趣。要尝试简单的,慢慢就会复杂的了,想想现在看的英文文章也是从一个个单词积累的。
所以要尝试啊,别光看光点赞光收藏啊。

最后我们需要帮助:我们正在翻译deep learning这本书,直译版已全部翻完正在校正中,大概2周后公开。希望多多提提意见,帮忙修改修改,目前处于私密状态,在github上。

使用Python连接PostgreSQL

Python中可以用来连接PostgreSQL的模块很多,这里比较推荐psycopg2。psycopg2安装起来非常的简单(pip install psycopg2),这里主要重点介绍下如何使用。

连接数据库:

import psycopg2
conn = psycopg2.connect(host="10.100.157.168",user="postgres",password="postgres",database="testdb")

连接时可用参数:

  • dbname – 数据库名称 (dsn连接模式)
  • database – 数据库名称
  • user – 用户名
  • password – 密码
  • host – 服务器地址 (如果不提供默认连接Unix Socket)
  • port – 连接端口 (默认5432)

执行SQL

import psycopg2

conn = psycopg2.connect(host="10.100.157.168",port=5432,user="postgres",password="postgres",database="testdb")
cur = conn.cursor()
sql = ""
cur.execute(sql)
conn.commit()  # 查询时无需,此方法提交当前事务。如果不调用这个方法,无论做了什么修改,自从上次调用#commit()是不可见的
conn.close()

另外执行SQL时支持参数化

  • 语法:
    cursor.execute(sql [, optional parameters])
  • 案例:
    cursor.execute("insert into people values (%s, %s)", (who, age))

参考链接:http://initd.org/psycopg/docs/index.html

Category

Archives