- 博客(296)
- 资源 (34)
- 论坛 (11)
- 收藏
- 关注

转载 当太阳升起时开始奔跑
静谧的非洲大草原上,夕阳西下,这时,一头狮子在深思:明天当太阳升起,我要奔跑,以追上跑得最快的羚羊;此时,一只羚羊也在深思:明天当太阳升起,我要奔跑,以逃脱跑得最快的狮子。那么,无论你是狮子或是羚羊,当太阳升起,你要做的,就是奔跑。
2006-05-05 09:06:00
3620
2
原创 强化学习的并行加速
前言机器学习方法的复现性一直都是比较另人头痛的问题,因为很多因素都可能会影响最后的效果。而强化学习还涉及与环境交互带来的随机性,情况更加严重。可能类似的环境配置,跑上几遍结果还不太一样。2017年McGill University和Microsoft的论文《Deep Reinforcement Learning that Matters》中研究了强化学习的可复现性,指出像随机种子、环境因素、超参以及使用的codebase带来的不确定性都会导致结果难以重现。这在一定程度上就提高了实验成本。另一方面,除非是一
2021-02-28 12:58:17
230
原创 奔跑吧,旅行商 - 当机器学习遇上组合优化
背景如今机器学习在视觉、自然语言处理、语音、推荐等领域的应用已非常广泛,相关的讨论也非常多。与这些热门领域相比,关于机器学习在组合优化中的应用相对还没那么泛滥。今天我们就来聊一下这个有意思的话题。值得一提的是,近几年热度升温的GNN和RL(《GNN、RL强势崛起,CNN初现疲态?这是ICLR 2021最全论文主题分析》)都是这个方向里的常规方法。在实际工程中,有一类优化问题需要我们从集合的所有组合中找出一个最优方案。这类离散空间中的优化问题就称为组合优化问题(Combinatorial Optimizat
2020-12-06 10:41:18
2240
5
原创 自动驾驶平台Apollo 5.5阅读手记:Cyber RT中的通信传输
前言计算框架是自动驾驶系统中的重中之重,也是整个系统得以高效稳定运行的基础。为了实时地完成感知、决策和执行,系统需要一系列的模块相互紧密配合,高效地执行任务流。由于各种原因,这些模块可能位于不同进程,也可能位于不同机器。这就要求计算框架中具有灵活的、高性能的通信机制。我们知道,Apollo在3.5版本中推出了Cyber RT替代了原先的ROS。之前写过两篇相关的文章介绍了其中的调度部分:自动驾驶平台Apollo 3.5阅读手记:Cyber RT中的协程(Coroutine)和自动驾驶平台Apollo 5.
2020-09-12 14:00:17
3713
原创 闲话模型压缩之量化(Quantization)篇
1. 前言这些年来,深度学习在众多领域亮眼的表现使其成为了当今机器学习的主流方法。但其巨大的计算量仍为人诟病。尤其是近几年,随着端设备算力增强,业界涌现出越来越多基于深度神经网络的智能应用。为了弥补算力需求与供给的巨大鸿沟,近几年来模型压缩成为了业界的热点之一。模型压缩又可细分为多个子方向。之前在浅谈端上智能之计算优化中有过一些简单的论述,同时在闲话模型压缩之网络剪枝(Network Pruning)篇中更加具体地整理了些关于网络剪枝(network pruning)的东西,今天就再将目光放到另一类方法上
2020-06-25 15:21:52
9475
5
原创 小议车辆环境视觉基础前视感知
1. 前言无论是AD/ADAS还是智能网联车,前视感知都是其最基础和重要的能力之一。自动驾驶(AD)是前几年的热门话题。今天虽然稍微降温下来一些,但仍是大家关注的重点之一,毕竟它是人类长久以来的梦想之一。众所周知,美国汽车工程师学会(SAE)将自动驾驶分为 L0~L5共六个级别。其中L3及以上允许由系统在限定或不限定条件下完成所有的驾驶操作;而L2及以下还是需要由人类驾驶员一直保持驾驶状态,因此...
2020-04-11 09:45:35
5729
原创 自动驾驶平台Apollo 5.5阅读手记:Cyber RT中的任务调度
前言Baidu Apollo在3.5中引入了Cyber RT,替换了之前基于ROS的变体。Cyber RT的一大特点在于其调度系统。因为自动驾驶与人身安全强相关,因此很强调实时性。传统的机器人系统并不为此设计,所以很难满足实时性要求。系统中存在大量异步任务,如果任其运行和抢占,系统会有很大的不确定性。为了提高系统中任务执行的确定性,Cyber RT引入了协程,在用户态来做调度,一方面让开发者可以...
2020-01-27 11:51:11
10959
6
原创 浅谈端上智能之计算优化
一、背景 - 边缘智能人工智能(Artificial intelligence)的迅速发展正在改变世界。以深度学习(Deep learning)为驱动力和代表的第三波AI浪潮,正在变革和赋能金融、制造、农业、交通、医疗、零售、教育等众多行业,同时也极大地影响着我们每个人的生活。当前,在移动设备上各种新的AI应用场景正在不断涌现。大量新的需求对端上的智能能力提出了新的挑战,也带来了新的机遇。今天,...
2019-11-16 10:24:36
6367
1
原创 闲话模型压缩之网络剪枝(Network Pruning)篇
背景今天,深度学习已成为机器学习中最主流的分支之一。它的广泛应用不计其数,无需多言。但众所周知深度神经网络(DNN)有个很大的缺点就是计算量太大。这很大程度上阻碍了基于深度学习方法的产品化,尤其是在一些边缘设备上。因为边缘设备大多不是为计算密集任务设计的,如果简单部署上去则功耗、时延等都会成为问题。即使是在服务端,更多的计算也会直接导致成本的增加。因此,人们正在从各个角度试图克服这个问题,如这几...
2019-09-15 09:23:26
22355
9
原创 超参数自动优化方法PBT(Population Based Training)
我们知道,机器学习模型的效果好坏很大程度上取决于超参的选取。人肉调参需要依赖经验与直觉,且花费大量精力。PBT(Population based training)是DeepMind在论文《Population Based Training of Neural Networks》中提出的一种异步的自动超参数调节优化方法。以往的自动调节超参方法可分为两类:parallel search和sequen...
2019-08-24 12:26:45
9098
原创 C++强化学习通过Python bindings接OpenAI Gym
OpenAI gym是强化学习最为流行的实验环境。某种程度上,其接口已经成为了标准。一方面,很多算法实现都是基于gym开发;另一方面,新的场景也会封装成gym接口。经过这样一层抽象,算法与实验环境充分解耦隔离,可以方便地自由组合。但gym是python的接口,如果想用C++实现强化学习算法,则无法直接与gym相接。一种方案是跨进程:一个进程运行python环境,另一个进程运行强化学习算法,与环境交...
2019-06-29 08:19:13
5292
原创 单机玩转神经网络架构搜索(NAS) - Auto-Keras学习笔记
介绍AutoML这个topic在机器学习领域越来越火,新的研究成果也是层出不穷。在网络架构(NAS),模型压缩(AMC),数据增强(AutoAugment),优化器设计(Neural Optimizer Search),平台相关优化(AutoTVM)等领域,我们都可以看到相应的研究成果表明机器学习可以达到比人肉调参更优的结果。自动化方法正在逐步替代调参工。相信不久的将来,我们面对一个场景,只要喂...
2019-04-05 09:05:40
7752
5
原创 自动驾驶平台Apollo 3.5阅读手记:Cyber RT中的协程(Coroutine)
原文链接:背景2019 CES上百度发布了Apollo 3.5,其中的亮点之一就是其高性能计算框架Cyber RT。我们知道,Apollo在3.0及之前是基于ROS。ROS虽然已建立起强大生态,在机器人社区广受欢迎,但其多用于学术界实验室验证机器人算法,并不是为了工业界产品设计的。虽然社区已经看到这一矛盾,并已开整ROS 2.0,但现在还处于开发阶段。自动驾驶相较于其它高性能系统而言,最重要的...
2019-02-04 12:22:38
9946
1
原创 从《西部世界》到GAIL(Generative Adversarial Imitation Learning)算法
看过美剧《西部世界》肯定对里边的真实性(fidelity)测试有印象。William对其岳父James Delos, Delores对Alnold的复制体Bernard,Emily对其父亲William都做过。其中有些测试方和被测试方都是机器人。永生一直是很多科幻剧热衷的话题,而《西部世界》给出了一种基于机器载体与人类思想结合的方案,就是人的复制。那么问题来了,要想复制人,主要有两部分:一部分是躯体,当然这部分按剧中设定已不是问题,无论人、马、牛都能分分钟3D打印出来;另外一部分是思想的复制。但思想很难被
2018-12-23 20:04:02
8804
11
原创 神经网络架构搜索(Neural Architecture Search)杂谈
机器学习从业者被戏称为“调参工”已经不是一天两天了。我们知道,机器学习算法的效果好坏不仅取决于参数,而且很大程度上取决于各种超参数。超参数的自动搜索优化是一个古老的话题了。深度学习前它主要针对传统机器学习算法的参数,比较经典的方法有random search, grid search,Bayesian optimization,Reinforcement learning, Evolutionar...
2018-12-02 13:24:26
43888
13
原创 自动驾驶平台Apollo 3.0阅读手记:perception模块之lane post processing
背景之前写过一篇杂文《自动驾驶平台Apollo 2.5阅读手记:perception模块之camera detector》,介绍到用于camera输入的DNN模型不仅会输出物体检测结果,还会输出车道线的语义分割结果。但要得到最终的车道线信息,还要经过后处理。项目中自带一个例子cc_lane_post_processor_test,我们就以这个例子为线索,看下它的大体实现。首先按《自动驾驶平台A...
2018-10-13 19:26:46
7739
1
原创 深度增强学习DDPG(Deep Deterministic Policy Gradient)算法源码走读
本文是基于OpenAI推出deep reinforcement learning算法集baselines。之前写过该项目的环境setup介绍《常用增强学习实验环境 I (MuJoCo, OpenAI Gym, rllab, DeepMind Lab, TORCS, PySC2)》以及其中的另一重要算法-PPO算法走读《深度增强学习PPO(Proximal Policy Optimization)算...
2018-09-15 11:39:16
12544
4
原创 自动驾驶平台Apollo 2.5阅读手记:perception模块之camera detector
Apollo无人驾驶平台中camera会用来检测车道线及障碍物(车辆,自行车,行人等)。这是通过一个多任务网络来完成的。其中的encoder部分是Yolo的darknet,decoder分两部分:一部分是语义分割,用于车道线区域检测;另一部分为物体检测,用于物体检测。物体检测部分基于Yolo,同时还会输出其方向等3D信息,因此称为yolo3d。这些信息被输出后,就可以送到后续模块中进一步处理,从而...
2018-07-01 18:06:26
10657
31
原创 深度增强学习PPO(Proximal Policy Optimization)算法源码走读
OpenAI出品的baselines项目是一系列reinforcement learning(强化学习或增强学习)算法的实现。现在已经有包括DQN,DDPG,TRPO,A2C,ACER,PPO在内的近十种经典算法实现,同时它也在不断扩充中。它为对RL算法的复现验证和修改实验提供了很大的便利。本文主要走读其中的PPO(Proximal Policy Optimization)算法的源码实现。PPO是...
2018-05-27 19:40:58
61847
24
原创 自动驾驶平台Apollo 2.5环境搭建
我们知道,自动驾驶在学界其实已经是个很老的topic了。而这几年,伴随着以深度学习为主力的第三次AI浪潮,大家似乎看到了自动驾驶商业化的重大机会,于是无论是学界还是工业界都开始将注意力转向该领域。放眼望去,满大街似乎都在搞自动驾驶。前段时间,百度又发布了自动驾驶平台Apollo的2.5版本。要想搭个环境玩一下的话,其实官方文档里挺详细了。这里主要是备忘一下主要流程和一些小坑的解决方法。大体可分为以...
2018-05-06 19:16:32
13813
7
原创 读源码品Caffe - 结构流程篇
原文链接: https://blog.csdn.net/jinzhuojun/article/details/79834697背景本文主要介绍深度学习框架Caffe的工作原理和实现。时至今日,各种深度学习框架百花齐放,百家争鸣,从流行程度来说Caffe可能已经不同往日,那我们为什么还要来学习它的代码呢?尽管今天我们有了更多的选择,比如TensorFlow后来居上,凭借完整的生态、庞大的...
2018-04-07 18:57:53
5309
原创 常用增强学习实验环境 II (ViZDoom, Roboschool, TensorFlow Agents, ELF, Coach等)
原文链接:http://blog.csdn.net/jinzhuojun/article/details/78508203前段时间Nature上发表的升级版Alpha Go - AlphaGo Zero再一次成为热点话题。作为其核心技术之一的Deep reinforcement learning(深度增强学习,或深度强化学习)也再一次引发关注。Alpha Zero最有意义的地方之一是它去除了从...
2017-11-12 11:15:51
11087
原创 深度增强学习(DRL)漫谈 - 信赖域(Trust Region)系方法
一、背景深度学习的兴起让增强学习这个古老的机器学习分支迎来一轮复兴。它们的结合领域-深度增强学习(Deep reinforcement learning, DRL)随着在一系列极具挑战的控制实验场景及其它跨领域的成功应用,现在已是各大顶级AI会议的热门topic之一。之前两篇杂文深度增强学习(DRL)漫谈 - 从DQN到AlphaGo和深度增强学习(DRL)漫谈 - 从AC(Actor-Critic
2017-09-16 23:40:31
20630
7
原创 Fuchsia OS中的RPC机制-FIDL
背景Fuchsia是Google继Android和Chrome OS后推出的下一代操作系统。和其它OS类似,为了使应用能跨进程和服务端通信,它需要一套进程间的过程调用(RPC)机制,类似于Android中的binder。在Fuchsia中,各种service之间的通信接口都是用FIDL(Fuchsia Interface Definition Language,曾用名mojom)定义的(即那些以fi
2017-09-16 23:28:28
7997
2
原创 常用增强学习实验环境 I (MuJoCo, OpenAI Gym, rllab, DeepMind Lab, TORCS, PySC2)
原文地址:http://blog.csdn.net/jinzhuojun/article/details/77144590和其它的机器学习方向一样,强化学习(Reinforcement Learning)也有一些经典的实验场景,像Mountain-Car,Cart-Pole等。话说很久以前,因为没有统一的开发测试平台,大家都会自己实现,有用C/C++的,有用Python,还有用Matlab的。所以...
2017-08-13 16:02:50
16287
10
原创 Ubuntu 16.04下安装Cuda 8.0, Anaconda 4.4.0和TensorFlow 1.2.1
是Nvidia卡的,可以考虑安装Cuda,这样可以用GPU加速。之前写过一篇在Ubuntu 14.04上装Cuda 7.5的文章(Link)。TensorFlow 1.2版本貌似需要Cuda Toolkit 8.0,过程和之前是差不多的。更新driver(如需),然后去Nvidia官网下载Cuda和cuDNN安装即可。具体不再累述。对于大部分N卡,Cuda 8.0需要driver的最低版本为367,所以如果已经够用,在安装cuda的时候保险点的话就不用更新驱动。如果更新驱动后不幸中招,如循环登录或无法进入图
2017-08-13 10:47:06
5948
4
原创 深度增强学习(DRL)漫谈 - 从AC(Actor-Critic)到A3C(Asynchronous Advantage Actor-Critic)
原文地址:http://blog.csdn.net/jinzhuojun/article/details/72851548前言之前在文章《深度增强学习(DRL)漫谈 - 从DQN到AlphaGo》扯了一些关于DRL的内容,但因为是以DQN为主线,其中大部分谈的是value-based方法。我们知道传统增强学习(Reinforcement learning, RL)中除了value-ba
2017-06-04 22:29:16
45469
7
原创 Android N中UI硬件渲染(hwui)的HWUI_NEW_OPS(基于Android 7.1)
UI作为用户体验的核心之一,始终是Android每次升级中的重点。从Androd 3.0(Honeycomb)开始,Android开始支持hwui(UI硬件加速)。到Android 4.0(ICS)时,硬件加速被默认开启。同时ICS还引入了DisplayList的概念(不是OpenGL里的那个),它相当于是从View的绘制命令到GL命令之间的“中间语言”。它记录了绘制该View所需的全部信息,之后只要重放(replay)即可完成内容的绘制。这样如果View没有改动或只部分改动,便可重用或修改DisplayL
2017-01-08 23:18:20
13636
10
原创 懒人搭建OpenGrok for Android N on Ubuntu 16.04
本文以在Ubuntu 16.04上对Anroid N的源代码配置OpenGrok为例,记录了适合像我这种懒人的最基本搭建过程。想用各种高级用法请自行参见官方文档。
2016-12-04 20:40:56
4895
原创 Fuchsia开发环境搭建 for Ubuntu 16.04
Fuchsia是Google主要为IoT、手机及个人电脑开发的下一代操作系统。它与之前的Android、Chrome OS、Brillo等操作系统相比,一个显著的特点是它没有基于Linux内核,而是采用了微内核的Magenta(基于Little kernel)。Linux经过二、三十年的发展,今天无论是嵌入式设备还是分布式服务器,都有它的身影。但它起源于desktop时代,经过这么多年的活跃开发今天已俨然成为“大而全”的通用型内核。虽然可以通过裁剪、定制、增强满足IoT的基本功能,但时至今日种类多样的IoT
2016-11-06 17:02:17
11460
原创 深度增强学习(DRL)漫谈 - 从DQN到AlphaGo
深度增强学习(Deep reinforcement learning, DRL)是DeepMind(后被谷歌收购)近几近来重点研究且发扬光大的机器学习算法框架。两篇Nature上的奠基性论文(DQN和AlphaGo)使得DRL这一深度学习(Deep learning, DL)和增强学习(Reinforcement learning, RL)的交叉方向变得炙手可热。再加上多个影响较大的benc...
2016-10-10 23:12:53
17952
11
原创 Android N(7.0)中的Vulkan支持
Vulkan为Khronos Group推出的下一代跨平台图形开发接口,用于替代历史悠久的OpenGL。Android从7.0(Nougat)开始加入了对其的支持。Vulkan与OpenGL相比,接口更底层,从而使开发者能更直接地控制GPU。由于更好的并行支持,及更小的开销,性能上也有一定的提升。另外层式架构可以帮助减少调试和测试的时间。但是,代价是实现相同的功能更复杂了。原本用OpenGL写个最简单的demo百来行,用vulkan祼写的话没千把行下不来。因此实际使用中需要有utility层来简化接口调用。
2016-09-04 12:07:37
16978
2
原创 C++11中一些新语言特性与相似特性的比较
众所周知,C++11中加入了不少语言新feature,其中一些用于替代之前C++标准中的相应feature。其中不少看起来都很像,或者表面看起来只是让代码更简洁。下面就列举了一些C++11 feature及之前标准中类似feature,看下它们有些什么更深的区别。std::array vs C-style arraystd::array是C++11中引入的新容器,用于表示固
2016-07-23 16:44:00
2688
2
原创 libboost一些常用库(数据结构,迭代器,算法及字符串)
C++强大的重要原因之一就是它的库。而boost就是这样一个包罗万象的C++库,同时它也是C++标准库的官方后备军。不仅实用,功能全,而且灵活,高效,质量高。无论是学习或项目,都是有力的工具。下面罗列了容器、算法等几个重要类别下的主要子库。其中的一些已经是目前比较主流的C++11标准,有些在进入标准库的过程中,未来可能成为标准库的一部分。有些虽然进了标准库,但boost中的实现提供了额外的特性。总之,在boost中可以看到C++标准发展的一些趋势。
2016-07-16 11:45:14
7091
原创 Vulkan开发环境搭建for Windows
首先需要有支持Vulkan的GPU和相应的driver。比如Nvidia,可以在https://developer.nvidia.com/vulkan-driver上查看自己的GPU是否支持Vulkan,如果支持可以下载相应驱动。注意目前Nvidia支持Vulkan的driver还是beta版的。打开NVIDIA控制面板可以看driver是否已安装成功:然后就可以搭建开发环境了
2016-05-15 16:15:53
12861
1
原创 Android中的转屏流程
我们知道Android中支持横屏和竖屏,用户可以选择锁定(rotation lock)也可以选择让传感器来自动转屏。而转屏时为了使用户体验更流畅,会对屏幕截屏,然后使用截屏的图来做转屏动画,直到转屏动作结束。接下来以自动旋转为例看一下大体流程。过程虽然很短,但涉及到的模块其实不少,一个简化的相关类图如下:
2015-11-29 19:03:03
8233
2
原创 NVIDIA Cuda 7.5 on Ubuntu 14.04 64 bits
关于在Linux上搭Cuda环境,做个笔记备忘。1. 安装GPU Driver在Ubuntu中可以通过System Settings -> Software & Updates安装:详细可参考https://help.ubuntu.com/community/BinaryDriverHowto/Nvidia 。装好后,执行nvidia X server settin
2015-11-28 17:32:22
2905
原创 Wayland与Weston简介
简单地说,Wayland是一套display server(Wayland compositor)与client间的通信协议,而Weston是Wayland compositor的参考实现。其官网为http://wayland.freedesktop.org/。它们定位于在Linux上替换X图形系统。X图形系统经历了30年左右的发展,其设计在今天看来已略显陈旧。在X系统中,X Server作为中心
2015-08-08 21:11:20
18043
8
原创 Linux中的常用内存问题检测工具
C/C++等底层语言在提供强大功能及性能的同时,其灵活的内存访问也带来了各种纠结的问题。如果crash的地方正是内存使用错误的地方,说明你人品好。如果crash的地方内存明显不是consistent的,或者内存管理信息都已被破坏,并且还是随机出现的,那就比较麻烦了。当然,祼看code打log是一个办法,但其效率不是太高,尤其是在运行成本高或重现概率低的情况下。另外,静态检查也是一类方法,有很多工具(lint, cpp
2015-06-27 12:53:08
35156
5
原创 Android中的软件Watchdog
由于Android的SystemServer内有一票重要Service,所以在进程内有一个软件实现的Watchdog机制,用于监视SystemServer中各Service是否正常工作。如果超过一定时间(默认30秒),就dump现场便于分析,再超时(默认60秒)就重启SystemServer保证系统可用性。同时logcat中会打印类似下面信息:W Watchdog: *** WATCHDOG KILLING SYSTEM PROCESS: Blocked in monitor com.android.se
2015-06-18 22:33:59
12690
3
《Dynamic Programming and Optimal Control》 Vol 2
2010-07-05
《The nature of statistical learning theory》Vapnik V.N.
2009-10-25
《Rapid GUI Programming with Python and Qt》源代码 source code
2009-11-13
《Elements of the Theory of Computation》
2009-10-02
Principles of Data Mining
2010-09-08
The.Art.of.Multiprocessor.Programming.Source.Code
2012-02-14
Professional Linux Kernel Architecture
2010-08-29
程序员面试宝典(第二版)
2010-08-18
Understanding Search Engines: Mathematical Modeling and Text Retrieval
2010-09-08
《The Design of The Unix Operating System》(unix操作系统设计)
2009-10-02
Mining the Web-Discovering Knowledge from Hypertext Data
2010-09-08
Search Engines, Link Analysis, and User’s Web Behavior
2010-09-08
Data.Mining.Practical.Machine.Learning.Tools.and.Techniques.Second.Edition
2010-09-08
Windows Internals Fifth Edition
2011-01-28
《Learning Perl》 5th
2011-07-16
《UNIX环境高级编程》2ed 源代码
2009-08-21
自定义模块添加后删除还是显示着
发表于 2020-09-10 最后回复 2020-09-11
ariesjzj的留言板
发表于 2020-01-02 最后回复 2020-01-02
如何从深层递归中跳出?
发表于 2006-02-08 最后回复 2019-10-25
Markdown博文显示不全
发表于 2017-10-21 最后回复 2017-10-22
如何设置断点让程序在i这个变量变成5时停下来?
发表于 2006-03-04 最后回复 2006-03-04
c++中的文件结尾问题
发表于 2006-02-19 最后回复 2006-02-21
如何把字符转换为字符串?
发表于 2006-02-19 最后回复 2006-02-20
如何创建一个初始大小为100的string对象?
发表于 2006-02-07 最后回复 2006-02-08
谁知道常数1和1.0在运算中有什么区别?
发表于 2006-02-08 最后回复 2006-02-08
以下两种得到某一变量的地址结果有什么不同?
发表于 2006-02-05 最后回复 2006-02-07
在调试中如何看stl容器中的所有值?
发表于 2006-02-06 最后回复 2006-02-07
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人 TA的粉丝