[原创]最优化/Optimization文章合集

最优化(Optimization)是应用数学的一个分支,它是研究在给定约束之下如何寻求某些因素(的量),以使某一(或某些)指标达到最优的一些学科的总称。我一直对最优化比较感兴趣,所以写过一些相关的笔记,可能有不正确的地方,但请学术派、技术流们多多包涵。

➤ 拟牛顿法/Quasi-Newton,DFP算法/Davidon-Fletcher-Powell,及BFGS算法/Broyden-Fletcher-Goldfarb-Shanno

➤ 最速下降法/steepest descent,牛顿法/newton,共轭方向法/conjugate direction,共轭梯度法/conjugate gradient 及其他

➤ Ridders求导算法

➤ 选主元的高斯-约当(Gauss-Jordan)消元法解线性方程组/求逆矩阵
文章来源:http://www.codelast.com/
➤ 关于 最优化/Optimization 的一些概念解释

➤ 最小二乘的理论依据

➤ Powell共轭方向集方法(Powell's Conjugate Direction Method)的实现
阅读更多

[原创]Raspberry Pi/树莓派 文章合集

注:带有 ♬♬♬♬♬ 标志的是文章合集。

Raspberry Pi是什么?
引用维基百科的一句话:

The Raspberry Pi is a credit card sized single-board computer developed in the UK by the Raspberry Pi Foundation with the intention of stimulating the teaching of basic computer science in schools.

简单地说,它就是一个基于ARM CPU的、信用卡那么大的迷你计算机。
下面是我在折腾Pi的过程中的一些记录,仅供参考。

➤ 树莓派视频教程

➤ Raspberry Pi(树莓派)配置记录/Configure the Arch Linux ARM on Raspberry Pi

➤ 在Raspberry Pi(树莓派)上用OpenCV来操纵摄像头拍照/Use OpenCV on Raspberry Pi to Controll a Webcam to Take Photos

➤ 通过Raspberry Pi(树莓派)的GPIO接口控制发光二极管/Control LED through the GPIO on Raspberry Pi

➤ 通过Raspberry Pi(树莓派)的GPIO接口控制步进电机/Control stepper motor through the GPIO on Raspberry Pi
阅读更多

[原创]Apache Pig中文教程合集

Apache Pig是用来处理大规模数据的高级查询语言,配合Hadoop使用,可以在处理海量数据时达到事半功倍的效果,比使用Java,C++等语言编写大规模数据处理程序的难度要小N倍,实现同样的效果的代码量也小N倍。

我根据自己在工作中的学习和总结,写了如下一些Apache Pig中文教程,供大家参考。
文章来源:http://www.codelast.com/
➤  Apache Pig的一些基础概念及用法总结(1)

➤  Apache Pig的一些基础概念及用法总结(2)

➤  Apache Pig中文教程(进阶)
阅读更多

[原创] PyTorch做inference/prediction的时候如何使用GPU

话不多说,直接进入主题。

判断能不能使用GPU
可能有多种原因会导致不能使用GPU,比如PyTorch安装的是CPU版的,显卡驱动没有正确安装等。下面的 if 语句在正常的情况下会返回 True:

if torch.cuda.is_available():
    print('PyTorch can use GPU on current machine!')

文章来源:https://www.codelast.com/
 设置模型使用GPU

model = MyModel(*args, **kwargs)
model.load_state_dict(torch.load(your_model_file_path))
model.eval()  # 设置成evaluation模式
if torch.cuda.is_available():
    print('PyTorch can use GPU on current machine!')
    device = torch.device("cuda")
    model.to(device)

your_model_file_path 是模型文件的路径。
阅读更多

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

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

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

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

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

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

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

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

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

硬件工程师为之虎躯一颤。
阅读更多

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

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

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

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

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

[原创] 强化学习框架 rlpyt 的 size mismatch 错误原因及解决办法

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

rlpyt 是BAIR(Berkeley Artificial Intelligence Research,伯克利人工智能研究所)开源的一个强化学习(RL)框架。我之前写了一篇它的简介。 
当你使用 rlpyt 来实现自己的强化学习程序时,可能会遇到类似于下面这样的错误:

RuntimeError: size mismatch, m1: [1 x 365], m2: [461 x 32] at /tmp/pip-req-build-_357f2zr/aten/src/TH/generic/THTensorMath.cpp:752

本文分析错误原因及解决办法。
阅读更多

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

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

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

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

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

[原创] 配置iTerm2(MacOS)的"站点管理器"

很多terminal client都有“站点管理器”功能,也就是说把服务器连接参数保存在配置里,用户可以通过在图形界面上点击的方式就能连接上指定的服务器,不再需要手工输入服务器IP、用户名、密码。
SecureCTR,Xshell,ZOC等都有这种功能,但它们都不是免费软件。
在MacOS上,ZOC算是一个功能很强大的terminal,但其价格也是贵得离谱(2019年的价格是将近80美元/单用户授权),而免费又最流行的terminal——iTerm2,其对“站点管理器”的支持却不那么直接,需要经过一定的配置才能用起来,不过,就算是为了省那80美元,也值得我们花一些时间来配置一番,下面就走起来。
阅读更多

[原创] 强化学习框架 rlpyt 源码分析:(10) 基于CPU的并行采样器CpuSampler,worker的实现

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

rlpyt 是BAIR(Berkeley Artificial Intelligence Research,伯克利人工智能研究所)开源的一个强化学习(RL)框架。我之前写了一篇它的简介。 本文是上一篇文章的续文,继续分析CpuSampler的源码。
本文将分析 CPU并行模式下的 ParallelSamplerBase 类的worker实现。

▶▶ worker的代码在哪
rlpyt/samplers/parallel/worker.py
阅读更多

[原创] 强化学习框架 rlpyt 源码分析:(9) 基于CPU的并行采样器CpuSampler

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

rlpyt 是BAIR(Berkeley Artificial Intelligence Research,伯克利人工智能研究所)开源的一个强化学习(RL)框架。我之前写了一篇它的简介。 本文是上一篇文章的续文,继续分析CpuSampler的源码。
我们已经知道了CpuSampler有两个父类:BaseSampler 和 ParallelSamplerBase。其中,BaseSampler主要是定义了一堆接口,没什么好说的,因此本文接着分析另一个父类 ParallelSamplerBase。在 ParallelSamplerBase 中,初始化函数 initialize() 做了很多重要的工作,已经够写一篇长长的文章来分析了,这正是本文的主要内容。
阅读更多

[原创] 强化学习框架 rlpyt 源码分析:(8) 基于CPU的并行采样器CpuSampler

写这篇文章的过程中,我改稿改到怀疑人生,因为有些我自己下的结论在看了很多次源码之后又自我否定了多次,所以这篇文章花了我很长时间才完工。虽然完稿之后我仍然不敢保证绝对正确,但这至少是在我当前认知情况下我“自以为”正确的版本了,写长稿不易,望理解。

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

rlpyt 是BAIR(Berkeley Artificial Intelligence Research,伯克利人工智能研究所)开源的一个强化学习(RL)框架。我之前写了一篇它的简介。 

在单机上支持丰富的并行(Parallelism)模式是 rlpyt 有别于很多其他强化学习框架的一个显著特征。rlpyt可以使用纯CPU,或CPU、GPU混合的方式来并行执行训练过程。
阅读更多