[原创] 使用Apache DataFu中的Coalesce()简化Apache Pig的三元运算符

查看更多Apache Pig的教程请点击这里

来看这个例子。有数据文件 1.txt,内容为:

a[\t][\t]c
[\t]f[\t]g
h[\t]k[\t]
[\t][\t][\t]
其中 [\t] 表示制表符(tab),并不是真的在文件中写了 [\t]
在Pig命令行交互模式下加载这个文件,并把其中为空(NULL)的列替换成一些数字:

A = LOAD '1.txt' AS (col1: chararray, col2: chararray, col3: chararray);
B = FOREACH A GENERATE (col1 IS NOT NULL ? col1 : '1') AS col1, (col2 IS NOT NULL ? col2 : '2') AS col2, (col3 IS NOT NULL ? col3 : '3') AS col3;
DUMP B;

输出:

(a,2,c)
(1,f,g)
(h,k,3)
(1,2,3)

代码非常简单:如果第一列col1为空则替换为1,如果第二列为空则替换为2,如果第三列为空则替换为3。
这里使用了三元运算符 ? : 来做这个判断,写法非常丑陋。

阅读更多

[原创] 调戏了一番度娘"最先进"的PLATO-2预训练模型之后,我还是回到了和人类交谈...

plato-2 network arch
(莫慌,这图是拿出来撑场面的,我可能和你一样看不懂)

前言:这是一篇很不严肃的实验文章。每一个会修电脑的人,都可以很容易地照着本文的描述,自己去操作一遍。

大概一周前,百度不是发布了一个“取得重要进展”的对话生成网络 PLATO-2 吗?我当时一看到那消息,精神就来了,为什么?这得先从解释一下“这玩意是干什么用的”说起——毕竟,这篇文章要让每一个群众都能看得懂,大家好才是真的好。

近日,百度发布对话生成网络 PLATO-2,宣布在开放域对话生成模型上迎来重要进展。PLATO-2 承袭 PLATO 隐变量进行回复多样化生成特性,模型参数高达 16 亿,涵盖中英文版本,可就开放域话题深度畅聊。实验结果显示,PLATO-2 中英文对话效果已超越谷歌 Meena、微软小冰和 Facebook Blender 等先进模型。

咳咳,这些专业术语说的是什么鬼?
如果你完全看不明白这段话,只需要知道:它说的是和NLP(自然语言处理,一门机器学习的分支学科)相关的一些东西。
可能有的人只听说过这段话里提到的“微软小冰”——她的主要功能就是一个【聊天机器人】,和小米的“小爱同学”颇为相似。
“小爱同学,帮我把空调打开!” “好的,开啦!”
——相信这样的场景,早已飞入我国千千万万寻常百姓家。
所以,百度发布的这个 PLATO-2,它可以用来做“小爱同学”的大脑,也就是最核心的那一块功能。不过现实中的“小爱同学”远比这个复杂,在这里只是做一个比喻而已。

阅读更多

[原创] PHP 7.0 升级到 7.3

✔ 为什么要升级PHP版本
就是这么逗逼,从PHP 5.4升级到7.0之后,WordPress又升了几次版本,让PHP 7.0又成了明日黄花(不是“昨日黄花”啊同志们,成语要用对),虽然7.0还能用,但是每次进WordPress后台看到的“PHP版本太旧”的提示很碍眼,于是我下定决心要把它升级到当前最主流的 7.3 版——本文写作之时,是2020年7月。
以下步骤只适用于CentOS 7系统(具体子版本不确定能支持到什么范围)。
 
 怎样升级PHP版本最方便
这回我就没有那么幸运了,虽然还是可以用yum来安装PHP相关的package,但是安装好之后有很多问题导致不能用,折腾了好些时间才搞定。作为一个平常工作中完全不用PHP的人,我太难了。

阅读更多

[原创] PHP 5.4 升级到 7.0

 为什么要升级PHP版本
WordPress版本升级,已经不支持5.4了,必须要升到7.x,就这一条理由就不得不面对现实。再说了,PHP 5.4是多么老旧的上古化石版本啊!
以下步骤只适用于CentOS 7系统(具体子版本不确定能支持到什么范围)。


 怎样升级PHP版本最方便
对我来说,原来的PHP是通过yum install安装的,因此,如果能通过yum来把旧版升级到新版,是最方便的了。源码编译什么的,那得多烦啊!

阅读更多

[招聘] 前端/后端/算法 工程师/Leader,总有一款职位期待你!

无论你身在上海,还是北京,无论你想踏实前行,还是心怀远大梦想,只要你是一个用键盘和代码改变世界的工程师,那么都希望你不要错过下面的“召集令”。
字节跳动(今日头条、抖音的母公司)现在正在招聘:前端/后端/算法 工程师/Leader,总有一款职位期待你!

等等,有奇怪的群众会跳出来说:你好像并不是在字节跳动工作的呀?为什么要帮它们发这个?
在这里我首先要做一个声明哈:我爱我所在的team,我爱我的公司——至少时至今日还是如此。

但是,人在江湖飘,哪能不要脸?这不,字节的朋友几次让我帮忙推荐急需的工程师,说了几次:难道我们的友情只值一毛钱?
我脸往哪放?我总得用我这羸弱的力量助推一下嘛,所以我就把职位信息放上来挂着啦。在字节跳动混得风生水起的专家直接帮你内推,应聘效率有保障!

阅读更多

[原创] 总有一天,失业不再遥远

尽管人类离[通用人工智能]的路还很远,但越来越多新技术的出现,让这条路得以不断加速。

​What?强化学习设计芯片?

就这几天的事:Google已经开始用强化学习技术来设计芯片了!
如果说用强化学习来玩游戏、下围棋,甚至用来帮助提升互联网广告的点击率、收入,都不是什么新鲜事的话,那么用强化学习来设计芯片,就也太新鲜了吧?但Google就做到了[1]

我们提出了一种基于学习的芯片布局方法,这是芯片设计过程中最复杂、最耗时的阶段之一。与之前的方法不同,我们的方法具有从过去的经验中学习并随着时间的推移而改进的能力。特别是随着我们对更多的芯片块进行训练,我们的方法在快速生成以前未见过的芯片块的优化布局方面变得更好。为了实现这些结果,我们将芯片布局作为一个强化学习(RL)问题,并训练一个Agent将芯片网表的节点放置到芯片画布上。为了使我们的RL策略能够泛化到未见过的芯片块,我们将表征学习置于预测布局质量的有监督任务中。通过设计一个能够准确预测各种网表及其布局质量的神经架构,我们能够生成丰富的输入网表的特征嵌入。然后,我们使用这个架构作为我们的策略和价值网络的编码器来实现转移学习。我们的目标是将PPA(功率、性能和面积)降到最低,我们表明,在6个小时内,我们的方法可以在现代加速器网表上生成超越人类或可与之相媲美的芯片布局,而现有的基线需要人类专家在循环中进行,并需要几周的时间。

硬件工程师为之虎躯一颤。

阅读更多

[原创] 美国佛罗里达的执念:海滩

佛罗利达州(Florida)是美国本土最南端的一个州,旅游业是其经济收入的最大来源,温暖的天气和沙滩美景每年吸引1亿多游客。

如果说这个世界上有哪里的人最不怕新冠病毒的死亡威胁,那美国佛罗里达的海滩爱好者绝对能排得上号。
佛罗里达州的很多人对海滩有着近乎狂热的感情,COVID-19(新冠病毒)暴发完全无法影响他们亲近海滩的强烈意愿,在州政府最近重新开放了海滩之后,他们一堆人带着老婆孩子,不戴口罩到海滩上去散步,可谓是真的“勇士”(或脑残)、生死看淡!
伴随着这样的事实背景,Twitter的趋势榜也随之出现了一个很火的hashtag:#FloridaMorons佛罗里达傻X),网友们无情发贴抨击、讽刺那些“不去海滩聚集就会憋死”的佛罗里达人。

阅读更多

[原创] 戴口罩也不是我们的文化

首先我要讲一个真实的事情。上周末我在上海黄浦江边的一个开放式公园里看到很多人,大人小孩都很多,我看到的全部外国人(白人)一共有3个:1个大人+两个小孩,全部都不戴口罩。而我看到的几十个中国小孩全都戴了口罩。
不做杠精,我只是从长相上判断中国人和外国人,至于他们是不是换了国籍我不知道。
虽然样本量小,但是从最近从网络上得到的很多信息,以及我亲自观察到的现象上来看,我认为这不是偶然现象——欧美国家的大多数人,血液里流淌着抗拒口罩的基因。
这一周我和Cambly的两位外国友人谈了谈这个问题,更能印证“不戴口罩”是一种深深固化在欧美人民心中的一种思维模式。

阅读更多

[原创] 当美国人听说我已经实现了口罩自由之后...

两天前的4月2日,在美国马萨诸塞州(也就是麻省理工学院MIT所在的那个州),有一个大新闻:在该州抗疫物资已经紧缺得十万火急,而又无法得到联邦政府援助的情况下,州长查理·贝克(Charlie Baker)打通各种关系,从中国订购了170万N95口罩,经过相当复杂的一系列联络与协调,在中国驻纽约领事馆、中国企业的大力支持下,最后通过职业橄榄球队“新英格兰爱国者”老板罗伯特·卡夫(Robert Kraft)的一架私人波音767飞机,从中国深圳运回了首批120万个口罩。
州长和爱国者的老板一下子成了很多人心目中的英雄。
我浏览了和此新闻相关的很多Twitter信息流,总结出来几个现象:
(1)很多美国人使劲表扬州长和“爱国者队”,有很多路转粉;
(2)也有很多美国人骂美国联邦政府太没用,骂散装美国各自为政的混乱场面;
(3)永远少不了一部分美国人在一如既往地反华,说这是中国来的口罩,就算放到我面前我都不用!(然而N95是分发到抗疫前线的医务人员手里的,根本不会送给你们这些群众好吗!)

阅读更多

[原创] 从近期与几位国外友人的交流看欧美人民在疫情下的心情

Cambly是我一直用来和国外友人(英语口语)交流的平台,每周2次,从不间断。最近,中国大陆疫情得到了极大缓和,而欧美疫情则迎来了大爆发。我近几周和一些国际友人聊了聊,我觉得从他们的谈话中可以一窥欧美普通民众对他们国家政府“抗疫”不力的无奈心情。

阅读更多

[原创] 来自丹麦的妹子Leila,修机械玩摩托写代码,酷就一个字

点开这篇文章的各位,你们一定会觉得很奇怪:这是什么奇怪的标题?你不是一般只发技术文章的吗?
并不是。和学习相关的文章我也会发。作为一个最近几年来都在顽强地每天坚持背英语单词,并且自掏腰包和老外练口语也坚持了一年多的人,我可以算是在英语学习上也没有退步,所以我想和大家分享一下英语口语学习中的一些事。

今天我要向大家推荐Cambly上的一个丹麦妹子,Leila老师。昨天已经是我第二次和她交流了。
等等,Cambly是什么奇怪的东西?
Cambly是一个和老外(native English speakers)视频聊天练习英语口语的平台——当然不是免费的,但是如果你用推荐码 DZZZ 注册一个账号,能免费得到15分钟的使用时间,反正不要钱,不妨尝试一下。

阅读更多

[原创] 强化学习框架 rlpyt 的数据可视化工具:viskit

查看关于 rlpyt 的更多文章请点击这里

rlpyt 是BAIR(Berkeley Artificial Intelligence Research,伯克利人工智能研究所)开源的一个强化学习(RL)框架。我之前写了一篇它的简介。 
在训练强化学习模型的过程中,rlpyt 产生的大量训练日志看起来无比枯燥,本文展示了如何利用 viskit 把这些日志数据可视化。

阅读更多

[原创] Python的list.append()比np.append()更快

在Python中,假设你最终想得到一个NumPy array,而它是通过append大量数据得到的,那么有两种办法:
先创建一个Python list,append完数据之后再把这个list转成NumPy array。
 直接创建一个NumPy array,用 np.append() 函数来append数据。
第1种比第2种快很多,尤其是当你在一个for循环中频繁做这个事情的时候,差距就更明显了。

阅读更多

[原创] PyTorch模型 .pt,.pth,.pkl 的区别

我们经常会看到后缀名为 .pt,.pth,.pkl 的PyTorch模型文件,这几种模型文件在格式上有什么区别吗?
其实它们并不是在格式上有区别,而只是后缀上不同而已(仅此而已)。在用 torch.save() 函数保存模型文件的时候,各人有不同的喜好,有些人喜欢用 .pt 后缀,有些人喜欢用 .pth 或 .pkl。用相同的 torch.save() 语句保存出来的模型文件没有什么不同。
在PyTorch官方的文档/代码里,有用 .pt 的也有用 .pth 的
据某些文章的说法,一般惯例是使用 .pth,但是官方文档里貌似 .pt 更多,而且官方也不是很在意固定用一种,大家就自便吧。

阅读更多