pytorch谁开发的可以在arm上跑吗

基于Atmel Studio 6软件的KEIL ARM 编译器使用
发布评论请先
命令行中 gcc表示我们是用gcc来编译我们的源程序,-o 选项表示我们要求编译 器给我们输出的可执....
与Arm一样同属于精简指令集的RISC-V正在吸引越来越多的科技公司,目前包括IBM、NXP、西部数....
高通在今年的台北电脑展期间发布了骁龙850芯片,表明了进一步耕耘ARM Win10平台的决心。
ARM是目前最成功的低功耗处理器架构了,不论是移动处理器还是嵌入式市场,ARM架构芯片都是绝对的主流....
本文档的主要内容是KEIL C51 V 9.59 官方最新版软件 Keil C51是美国Keil S....
Keil C166也称C166,PK166等,是ARM/Keil专门针对XC16x,C16x和ST1....
日本欲重夺超算第一的行动初见端倪,近日,富士通等研究机构已经开始对下一代超算Post-K进行原型CP....
Atmel产品营销经理Patrick Hanley示范以maXTouch驱动的Lenovo Yoga....
Atmel的MCU业务部SVP暨GM Reza Kazerounian 博士对Atmel在CES 2....
基于Atmel无线技术,支持京东微联标准的传感器套件,将温湿度、空气质量、人体感应和门窗开关等传感器....
Maker Faire 制汇节 @ 罗马: 我们参与丶遇见丶创造
Arduino 共同始创人 Massimo Banzi 先生浅谈 Atmel Studio 7
利用Atmel的SAM G55和WINC1500 Wi-Fi(R) 开发板、LED灯和风扇等硬件,模拟以....
视频中Atmel的Atta R?mer博士和Agilion公司的业务经理谈到最新同相量度,并演示基於....
当好莱坞电影的黑客入侵情节成真
物联网时代的来临显而易见,更将覆盖日常生活各方面的应用。Atmel为促进把互联世界带到现实生活中,在....
Atmel30年的风雨历程,感谢你们
Embedded World 2015:云端平台伙伴解决方案
MakerCon 2015 - 从创客空间到市场空间
AVR入门: 把10mS ADC范例平均至一秒
来看看更多Atmel的眩眼展品
2016德国纽伦堡嵌入式展:ATMEL1美圆的 物联网节点
4条通道,1位实时产生的声音,kickdrum,小鼓,HIHAT和低音, 8步进音序器
Atmel Studio7 带中文字幕讲解
这是数字化的经典井字棋。它有一个内置的AI机制,对人类对手作出抗辩或赢得的举动。允许用户先玩。使用滚....
BACNET代表了楼宇自动化和控制网络,它主要应用于HVAC,公用事业,电力,安防等系统中。
Atmel 提供完整的软件开发工具框架, 让IoT 创造者可以马上开始设计应用。不需担心各层通讯链路....
2013年万圣节-行走的僵尸
爱特梅尔maXTouch(R) S 系列触摸屏控制器是突破性的无限次触摸技术的下一代产品,最大可支持17....
爱特梅尔推出的maXTouch触摸屏控制器,触摸屏技术改变了游戏。此视频解释了什么是开创性的maXT....
除了CPU和GPU,三星还拿到了ARM的Artisan physical IP授权,包括全套的内存编....
atmel studio 7中文版是款Atmel公司研发推出的集成化开发环境(IDE),它可以为用户....
Arm一路见证和参与了科技世界的巨变,并且仍在不断前进。
在单核时代,各个SOC vendor厂商购买ARM core的IP,然后自己设计SOC上的perip....
能够深入研究嵌入式开发工具背后的机制并将之熟练运用,标志着开发人员的技术水平达到了较高的程度。
为产品选择正确的微控制器可能是项令人怯步的任务。您不仅要思考许多技术特性,还要考虑成本和备货时间等会....
言下之意就是自主CPU只能在党政市场玩,商业市场要靠合资CPU的。由于该文的标题是"ARM引领中国服....
基于自身的互联网服务和 Android 平台的海量用户,在 2C 市场,Google 不仅可以直接将....
Atmel EW 2011 - ARM 和maXTouch
这是世界上最低功耗的32位基於ARM Cortex-M0+的ARM处理器,针对可穿载应用(可支持基本....
Microchip ARM(R) Cortex(R)-M0+内核单片机系列
事实上,还有许多与芯翼科技类似的公司,它们的成功除了自身杰出团队的努力外,也得益于DesignSta....
虽然2018年包括台积电、三星、格罗方德都要导入7纳米制程技术。其中,三星为了追赶台积电,还在首代的....
简述ARM Linux内核启动三个阶段的功能。
在嵌入式系统中对GUI的基本要求是什么?
该服务器实验还利用了相对较新的商业太空能力。SpaceX是Space Exploration Tec....
如果能够拥有一部智能个人助理,它能听懂我们说的话并做出智能反应,然后处理日常任务,那感觉一定很棒。鉴....
二 IWDG功能
1、硬件看门狗
2、调试模式
三 WWDG介绍
四 WWDG功....
一 定时器简介
二 定时器主要特性
三 定时器功能描述
1、时基单元
2、计数器模式
第七讲:DMA和RTC--《为ARM初学者导航》
一 ADC简介
1、ADC介绍
2、主要特征
二 功能描述
1、ADC 开关控制
2、通道....
供应链服务
版权所有 (C) 深圳华强聚丰电子科技有限公司
电信与信息服务业务经营许可证:粤B2-ArXiv最受欢迎开源深度学习框架榜单:TensorFlow第一,PyTorch第四
<span class="tipso_style" id="tip-w-j" data-tipso=''>
用户名/邮箱
Login form protected by .
记住我的登录信息
点击“立即注册”转到用户注册页面。
输入用户名或电子邮箱地址,您会收到一封新密码链接的电子邮件。
用户名或电子邮件地址
Login form protected by .使用PyTorch,OpenAI Gym和Gazebo机器人模拟器为NVIDIA Jetson深度强化学习GPU库
机器人深化强化学习在本教程中,我们将创建人工智能代理,从与环境交互中学习,收集经验,并通过深度强化学习(深度RL)获得奖励系统。使用将原始像素转换为动作的端到端神经网络,RL训练的代理能够展示直观的行为并执行复杂的任务。最终,我们的目标是通过3D虚拟机器人仿真训练强化学习代理,并将代理转移到真实世界的机器人。强化学习者根据环境状态(如摄像机输入)和奖励向代理提供关于其性能的反馈,为代理选择最佳行为。强化学习可以学习在给定策略或任务的环境中表现最佳,例如获得奖励。在许多情况下,状态空间非常复杂且多维度,因此越来越多地使用神经网络来预测最佳动作,这是深度强化学习和GPU加速技术发挥作用的地方。通过深入的强化学习,代理人通常使用卷积神经网络(CNN)处理2D图像,处理比低维RL更复杂一个数量级的输入,并且能够通过最终结果学习“从视觉” (被称为“像素到动作”)。该存储库包括PyTorch中的离散Deep Q-Learning(DQN)和连续A3G算法,C ++中的示例和互操作性库API,用于将Linux应用程序集成到机器人,仿真和现场部署中。目录从源代码构建从终端运行以下命令以从源代码构建:$ sudo apt-get install cmake
$ git clone http://github.com/dusty-nv/jetson-reinforcement
$ cd jetson-reinforcement
$ git submodule update --init
$ mkdir build
$ cd build
$ cmake ../
$ make在此cmake步骤中,PyTorch将被编译和安装,因此可能需要一段时间(约30分钟到1小时在Jetson上)。我们目前使用的PyTorch的稳定版本是0.3.0。构建脚本将下载pacekages并sudo在安装期间询问您的密码。验证PyTorch在继续之前,为确保PyTorch安装正确,并且如果您不熟悉PyTorch,请提供一个名为Jupyter IPython的笔记本,其中包含一些简单的PyTorch示例,用于验证安装并测试CUDA / cuDNN支持PyTorch。要在系统本地启动,请运行以下命令:$ cd jetson-reinforcement / build / aarch64 / bin
#或cd在PC上的x86_64 / bin
$ jupyter notebook intro-pytorch.ipynb或者,如果您希望跳过笔记本并直接运行PyTorch验证命令,可以通过使用python命令启动交互式Python shell 并运行以下命令来完成此操作:&&& import pytorch
&&& print(torch.__version__)
&&& print('CUDA available: ' + str(torch.cuda.is_available()))
&&& a = torch.cuda.FloatTensor(2).zero_()
&&& print('Tensor a = ' + str(a))
&&& b = torch.randn(2).cuda()
&&& print('Tensor b = ' + str(b))
&&& c = a + b
&&& print('Tensor c = ' + str(c))如果PyTorch在您的系统上正确安装,则输出应如下所示:Python 2.7.12 (default, Nov 19 2016, 06:48:10)
[GCC 5.4.0 ] on linux2
Type "help", "copyright", "credits" or "license" for more information.
&&& import pytorch
&&& print(torch.__version__)
0.3.0b0+af3964a
&&& print('CUDA available: ' + str(torch.cuda.is_available()))
CUDA available: True
&&& a = torch.cuda.FloatTensor(2).zero_()
&&& print('Tensor a = ' + str(a))
Tensor a =
[torch.cuda.FloatTensor of size 2 (GPU 0)]
&&& b = torch.randn(2).cuda()
&&& print('Tensor b = ' + str(b))
Tensor b =
[torch.cuda.FloatTensor of size 2 (GPU 0)]
&&& c = a + b
&&& print('Tensor c = ' + str(c))
Tensor c =
[torch.cuda.FloatTensor of size 2 (GPU 0)]现在我们已经证实PyTorch正在加载,能够检测GPU加速,能够在GPU上分配张量,并且能够使用CUDA执行基本张量操作。DQN + OpenAI健身房为了首先测试和验证深层强化学习算法的确在学习,我们将在OpenAI Gym环境(2D)中运行它们。作为DQN算法的介绍,第二个支持CUDA的IPython笔记本包含在回购中。这款笔记本将DQN应用于从Gym的环境中捕捉的视频,因此它在GPU上从“视觉”学习,而不是像传统RL那样从游戏获取低维参数。虽然CartPole是一个玩具的例子,但是从一个简单的例子开始,至关重要的一点是,在毕业后将更容易地调试到更复杂的3D场景,并且由于DQN从原始的2D像素数组中学习,它仍然被考虑深入强化学习。建议您按照下面的,以熟悉DQN算法,以便在后面的更复杂环境中从C ++转换到更复杂的环境时使用它。Cartpole要从您的机器本地启动,请运行以下命令:$ cd jetson-reinforcement / build / aarch64 / bin
#或者cd x86_64 / bin
$ jupyter notebook intro-DQN.ipynb在笔记本内部,DQN设置为仅运行50集。在目睹DQN开始收敛并且CartPole开始长时间保持正常之后,退出笔记本并从终端运行独立脚本以提高性能:$ python gym-DQN.py(假设你的终端的当前目录仍然jetson-reinforcement/build/&arch&/bin在上面)应该出现三个窗口,显示小推车游戏,一个性能图表,DQN代理应该开始学习。DQN特工能够平衡移动手推车上的杆子的时间越长,奖励得分越多。在健身房,200分表示场景已被掌握。经过一段时间的培训后,代理人应该实现它,程序将退出。Lunar Lander使用类似的脚本,您可以在不同的健身房环境中使用--env参数进行实验:$ python gym-RL.py --env = LunarLander-v2 --render该环境是有趣的探索,因为它是一个类似的任务,无人机自动着陆,因此对机器人技术相关。起初,着陆器将会疯狂地坠毁,但从第50集开始,你可能会注意到它开始试图留在旗帜之间,并且在几百集之后,它应该开始以受控制的下降着陆。在终端,你应该看到奖励变得积极,随着时间的推移会增加到200:Episode 010
Reward: -508.10
Last length: 079
Average length: 18.20
Episode 020
Reward: -301.04
Last length: 088
Average length: 25.02
Episode 030
Reward: -208.76
Last length: 102
Average length: 31.96
Episode 040
Last length: 071
Average length: 48.18
Episode 050
Reward: -155.66
Last length: 107
Average length: 53.96
Episode 060
Reward: -103.31
Last length: 091
Average length: 58.13
Episode 070
Last length: 095
Average length: 64.51
Episode 080
Last length: 147
Average length: 76.15
Episode 090
Reward: -150.40
Last length: 120
Average length: 86.76
Episode 100
Reward: -218.14
Last length: 100
Average length: 98.21
Episode 110
Last length: 101
Average length: 100.55
Episode 120
Last length: 120
Average length: 105.52
Episode 130
Reward: -112.93
Last length: 183
Average length: 120.30
Episode 140
Reward: -188.25
Last length: 110
Average length: 149.31
Episode 150
Last length: 176
Average length: 148.66
Episode 160
Last length: 174
Average length: 153.23
Episode 170
Reward: +131.50
Last length: 252
Average length: 155.50
Episode 180
Reward: +110.42
Last length: 128
Average length: 154.47
Episode 190
Last length: 161
Average length: 156.21
Episode 200
Reward: +111.07
Last length: 505
Average length: 162.06
接下来,我们将看看通过我们的C ++包装库将这些独立的Python示例集成到机器人代码中。深入研究C ++ API为了将这些深入的强化学习者从庞大的Python示例转化为可与机器人和模拟器集成的libray形式,我们为Python代码提供了一个C ++包装库和API。在下面,该库使用Python的低级别C FFI在应用程序和PyTorch之间传递张量内存,而无需额外的副本(ZeroCopy)。该库的架构可扩展到新型学习算法。下面是伪代码,说明RL实现继承的接口的签名:/**
* Base class for deep reinforcement learning agent
class rlAgent
* Create a new instance of a module for training an agent.
static rlAgent* Create( uint32_t width, uint32_t height,
uint32_t channels, uint32_t numActions );
* Destructor
virtual ~rlAgent();
* From the input state, predict the next action
virtual bool NextAction( Tensor* state, int* action );
* Issue the next reward and training iteration
virtual bool NextReward( float reward, bool end_episode );
};回购中包含代理的不同实现,包括我们将在模拟场景中使用的实现。用户将其传感器数据或环境状态提供给NextAction()调用Python脚本并返回预测动作的函数,然后用户将其应用于其机器人或模拟。接下来,在NextReward()函数中发布奖励,该函数从环境中向学习者提供反馈,并开始下一次训练迭代,使代理随着时间学习。测试C ++ API为了确保强化学习者在C ++中仍能正常工作,使用调用和调用的API的一些简单示例。在概念上与乒乓球类似,球在球到达屏幕底部之前必须捕捉的环境顶部的球落下,通过向左或向右移动桨。抓住与以前的单片Python脚本示例不同,该示例是一个简单的C / C ++程序,它链接到上述强化学习库。要测试文本示例,请从终端运行以下可执行文件。在大约100集左右之后,代理人应该几乎100%的时间开始赢得剧集:$ ./catch
input_width:
input_height:
input_channels: 1
num_actions:
optimizer:
learning rate:
replay_memory:
batch_size:
epsilon_start:
epsilon_end:
epsilon_decay:
allow_random:
debug_mode:
creating DQN model instance
DQN model instance created
DQN script done init
cudaAllocMapped 16384 bytes, CPU 0x GPU 0x
pyTorch THCState
nn.Conv2d() output size = 800
WON! episode 1
001 for 001
WON! episode 5
004 for 005
WON! episode 10
007 for 010
WON! episode 15
010 for 015
WON! episode 20
013 for 020
13 of last 20
(max=0.65)
WON! episode 25
015 for 025
11 of last 20
(max=0.65)
LOST episode 30
018 for 030
11 of last 20
(max=0.65)
LOST episode 35
019 for 035
09 of last 20
(max=0.65)
WON! episode 40
022 for 040
09 of last 20
(max=0.65)
LOST episode 45
024 for 045
09 of last 20
(max=0.65)
WON! episode 50
027 for 050
09 of last 20
(max=0.65)
WON! episode 55
031 for 055
12 of last 20
(max=0.65)
LOST episode 60
034 for 060
12 of last 20
(max=0.65)
WON! episode 65
038 for 065
14 of last 20
(max=0.70)
WON! episode 70
042 for 070
15 of last 20
(max=0.75)
LOST episode 75
045 for 075
14 of last 20
(max=0.75)
WON! episode 80
050 for 080
16 of last 20
(max=0.80)
WON! episode 85
055 for 085
17 of last 20
(max=0.85)
WON! episode 90
059 for 090
17 of last 20
(max=0.85)
WON! episode 95
063 for 095
18 of last 20
(max=0.90)
WON! episode 100
068 for 100
18 of last 20
(max=0.90)
WON! episode 105
073 for 105
18 of last 20
(max=0.90)
WON! episode 110
078 for 110
19 of last 20
(max=0.95)
WON! episode 111
079 for 111
19 of last 20
(max=0.95)
WON! episode 112
080 for 112
20 of last 20
(max=1.00)在内部,我们正在使用C ++库中的API来实现学习。备用参数有一些可供选择的命令行参数可用于改变环境的大小和像素数组输入大小,增加复杂性以查看它如何影响收敛和训练时间:$ ./catch --width = 96 --height = 96
$ ./catch --render
#启用环境的文本输出在96x96环境规模的情况下,捕鱼剂在150-200集之后达到75%以上的精度。在128x128环境规模的情况下,大约325集之后,捕鱼剂的准确度达到75%以上。水果接下来,我们提供了一个名为C ++的二维图形样本,其中代理出现在随机位置,并且必须找到“水果”对象才能获得奖励并在超出限制或超时期限到期之前赢取剧集。该代理有4个可能的动作可供选择:移动上,下,左,右屏幕上,以导航到该对象。请注意,此C ++示例主要在GPU上运行,其中CUDA中的环境的基本2D栅格化以及DQN和OpenGL中的显示可视化。和以前一样,它正在学习“从视觉上”,利用深度强化学习将原始像素阵列转换为动作。与更复杂的导航和运动计划任务类似,这个简单的示例旨在证明能够从任何起始位置以可视方式识别和导航感兴趣的对象。稍后在回购协议中,我们将在3D机器人仿真中建立这种路径规划功能。运行示例首先,从终端启动以下可执行文件:$ ./fruit在默认48x48环境下约100集后,它应该达到85%的准确度:action = DOWN
reward = +0.0628
wins = 052 of 094 (0.55)
16 of last 20
(max=0.80)
action = LEFT
reward = +0.0453
wins = 052 of 094 (0.55)
16 of last 20
(max=0.80)
action = LEFT
reward = +0.0271
wins = 052 of 094 (0.55)
16 of last 20
(max=0.80)
action = LEFT
reward = +0.0084
wins = 052 of 094 (0.55)
16 of last 20
(max=0.80)
action = UP
reward = +0.1208
wins = 052 of 094 (0.55)
16 of last 20
(max=0.80)
action = LEFT
reward = +0.1154
wins = 052 of 094 (0.55)
16 of last 20
(max=0.80)
action = UP
reward = +1.0000 EOE wins = 053 of 095 (0.56)
17 of last 20
(max=0.85)
action = DOWN
reward = +0.1441
wins = 053 of 095 (0.56)
17 of last 20
(max=0.85)
action = DOWN
reward = +0.1424
wins = 053 of 095 (0.56)
17 of last 20
(max=0.85)
action = DOWN
reward = +0.1406
wins = 053 of 095 (0.56)
17 of last 20
(max=0.85)
action = DOWN
reward = +0.1386
wins = 053 of 095 (0.56)
17 of last 20
(max=0.85)
action = DOWN
reward = +0.1365
wins = 053 of 095 (0.56)
17 of last 20
(max=0.85)
action = DOWN
reward = +0.1342
wins = 053 of 095 (0.56)
17 of last 20
(max=0.85)
action = RIGHT
reward = +0.0134
wins = 053 of 095 (0.56)
17 of last 20
(max=0.85)
备用参数与样本类似,您可以使用一些可选的命令行参数:$ ./fruit --width = 64 --height = 64 --episode_max_frames = 100当增加环境和像素阵列输入的尺寸时,episode_max_frames应该相应地增加,因为在情节暂停之前,代理将需要更多时间在更大的环境中穿过屏幕。3D模拟直到回购的这一点,环境都是二维的,即确认深度RL算法正在按照预期学习。为了将代理迁移到3D世界中,我们将使用机器人模拟器来模拟不同的自动机器,包括机器人手臂和漫游器,然后可以将其转移到真实世界的机器人。机器人手臂我们的第一个Gazebo环境训练机器人手臂触摸物体,而不需要明确的IK()。手臂的运动计划由网络内部学习。要开始,请从终端运行以下脚本:$ ./gazebo-arm.sh将学习与模拟挂钩的插件位于回购目录中。请参阅链接Gazebo与代码,并控制手臂关节。一旦您注意到手臂物剂会聚在物体上,您可以通过按T键盘上的按键启动TranslationGazebo中的模式,然后通过单击并拖动视口周围的物体,开始在场景周围移动物体。请注意,您需要移动物体,以便手臂仍能够到达它,因为手臂的旋转底座最初被限制在任一方向的行程约45度。流动站导航我们在Gazebo还有一个滑行转向火车,学习跟踪物体,同时避开其环境的墙壁,类似于场景。要启动流动站模拟,请运行以下脚本:$ ./gazebo-rover.sh按下Ctrl+T并订阅~/camera/link/camera/image主题以从相机中可视化场景。与手臂类似,一旦您注意到流动站一直在寻找物体(在这种情况下为绿色框),您可以通过T先按下,在场景周围移动物体。请注意,有一个情节超时类似于,所以如果不先在代码中增加流动站并重新编译,您不会希望将对象移动太远。连续控制我们一直使用的DQN代理是离散的,这意味着网络每个时间步选择一个输出神经元,然后用户明确地映射或定义对应于一个动作(通常按增量增加/减少位置或速度) 。这意味着对于机器人中的每个自由度,需要2个输出 - 一个是通过增量增加变量,另一个是减小它。在更复杂的现实世界中,同时控制所有自由度并使网络输出这些变量的精确值通常是有利的。例如,如果你想教一个人形行走(可以有20-40或更多的自由度),同时控制所有关节对于它的稳定性很重要。对于连续控制,存在一类更先进的深度强化学习者,称为Actor / Critic - 这是一个活跃的研究领域,最近得到了最新的最先进的解决方案,如,和。双足步行者为了在最具挑战性和困难的OpenAI健身房环境之一中演示持续学习者,在回购中包含了一个A3G演示,它启动了许多Gym实例,以便使用GPU并行快速学习。要启动A3G解算器,请从终端运行以下命令:$ cd jetson-reinforcement / python / A3G
$ python main.py --env BipedalWalkerHardcore-v2 --workers 8 --gpu-ids 0 --amsgrad True
- moduleCONV --stack-frames 4根据设置和系统资源的不同,通常需要90-120分钟的时间通过清除障碍和陷阱来掌握环境。如果您的PC或服务器中有多个GPU,则可以禁用渲染并增加工作线程的数量并指定其他设置gpu-ids以加速培训。附录:使用LUA默认情况下,回购利用PyTorch和Python构建。但是,Torch7和LUA脚本中也包含对编译标志的支持。该过程被编写为自动安装Torch7等依赖项,并从源代码构建项目。您可能需要在某个时间输入sudo密码。1.GitHub clone首先,确保构建工具$ sudo apt-get install git cmake
$ git clone http://github.com/dusty-nv/jetson-reinforcement2.配置构建$ cd jetson-reinforcement
$ mkdir构建
$ cd build
$ cmake ../ -DUSE_LUA = yes -DUSE_PYTHON = no这将启动构建诸如Torch之类的依赖关系,并且这对CUDA / cuDNN是有约束力的,这可能需要一些时间。3.编译$ cd jetson-inference / build
# omit如果pwd已经是来自步骤#2
$ make 根据体系结构,该软件包将被构建为armhf或aarch64,具有以下目录结构:|-build
where the application binaries are built to
where the headers reside
where the libraries are build to
where the application binaries are built to
where the headers reside
where the libraries are build to
验证Lua + Torch安装在或[下载程序包](#downloaded-the-package)之后,使用以下命令验证LuaJIT-5.1 / Torch7脚本环境:$ cd aarch64/bin
$ ./deepRL-console hello.lua
# verify Lua interpreter (consult if unfamiliar with Lua)
created new lua_State
opened LUA libraries
loading 'hello.lua'
HELLO from LUA!
my variable equals 16
multiply = 200
closing lua_State该命令将测试加载Torch7包和CUDA / cuDNN的绑定:$ ./deepRL-console test-packages.lua
# load Torch packages and bindings
created new lua_State
opened LUA libraries
loading 'test-packages.lua'
hello from within Torch/Lua environment (time=0.032163)
loading Lua packages...
loading torch...
loading cutorch...
cutorch.hasHalf == false
loading nn...
loading cudnn...
loading math...
loading nnx...
loading optim...
done loading packages. (time=5.234669)
closing lua_State这些脚本应该正常运行并验证Lua / Torch环境是否健全。deepRL控制台程序可以从命令行(CLI)启动用户的脚本。扮演LUA Q-Learner接下来,为了验证强化Q-learner学习它应该如何学习,让我们玩一个简单的游戏:半球或捕捉。$ ./deepRL-console catchDQN.lua启动上面的脚本应该开始你的Jetson玩捕捉游戏并实时绘制学习过程:每个时代都是一场比赛,球从球幕的顶部落到底部。在几百个时代之后,Q-learner应该在大多数时候开始接球。
没有更多推荐了,Facebook发布的Pytorch 1.0和新开源的围棋AI项目
编者按:今天是Facebook F8年度开发者大会的第二天,继5月2日发布约会功能、新隐私保护功能、Oculus Go VR头盔等消息后,3日Facebook又带来了方面的一些重大更新,包括即将在夏季末发布的Pytorch 1.0和新开源的围棋项目。以下是论智编译的Pytorch 1.0公告。
Pytorch源:pytorch.org//road-to-1.0.html
Caffe2源:caffe2.ai/blog//Caffe2PyTorch1_0.html
Caffe2公告摘要
在Pytorch 1.0中,Caffe2和PyTorch的软件包(在p和conda中)会合并;
继续提供本地库和python扩展作为单独的安装选项(和Caffe2和PyTorch现状一样);
所有交叉编译的构建模式均支持Caffe2平台(,,Raspbian,gra等),将继续拓展新平台支持。
模型生成(前端)
Caffe2的图形构建API(brew,core.Net)继续保留,现有的序列化模型NetDefs会拥有向后兼容性;
nn.Module-like将成为构建的首选。Pytorch 1.0会用&混合前端&取代现有前端,它利用跟踪和编译功能,能以图形格式(兼容Caffe2的NetDef和ONNX)提取完全序列化的模型,可用于高效部署。
Caffe2和PyTorch的运算符将合并使用;
PyTorch 1.0能本地支持ONNX,连接其他框架或库以便提取、传递模型。
精简和整合
Caffe2高度可扩展的执行引擎(各种加速后端和库集成和可伸缩图执行器)基本保持不变,还能与Python程序段交互操作,以实现快速原型设计;
Caffe2现有的predictor支持会成为本地模型在加速硬件支持上的主要手段(数据中心和移动设备可用)。
硬件集成和加速库支持
在PyTorch 1.0软件包的原型环境中直接提供Caffe2的各种设备支持和运行集成;
保留Caffe2针对加速硬件或完整图形运行的大部分接口代码,现有集成仍然有效。对于图形运行,官方正致力于ONNX的可视化。
Pytorch公告全文
亲爱的Pytorch用户,
在这篇文章中,我们想带你预览一下Pytorch 1.0的发展路线。Pytorch 1.0是Pytorch的下一代版本,在过去一年中,我们陆续推出了PyTorch0.2、0.3和0.4,并把原先类似[Torch + Chainer]的接口转换成了更简洁的形式,我们还引入double-backward、类似numpy的函数、高级索引,同时删除了变量样板。截至目前,我们确信所有API都处于稳定合理的状态,因此现在也是时候可以放心发布Pytorch 1.0了。
但是,Pytorch 1.0不仅仅意味着更高的稳定性。
Pytorch最大的优势之一是一流的Python集成水平,强制性的风格、简单的API选项,这些都是它方便用户研究和操作的重要因素。但它也有不少缺点,其中最大的一点是&producon-support&。这意味着为了更高效地大规模运行神经网络,用户必须对模型进行大量处理:
做大型项目时,用户需要把模型导出到;
要针对iPhone、Android、Qualcomm等其他移动设备系统和硬件进行优化;
为了更快地推断,用户需要使用更高效的数据布局和执行内核融合(节省10%地耗时和内存占用已经称得上是个巨大胜利);
量化精度(如8-bit推断)。
许多初创公司、大公司以及一些想用PyTorch构建产品的个人用户都曾向我们要求提供产品支持。在Facebook(PyTorch最大的利益相关者),我们已经有了Caffe2这个面向移动设备的平台,它曾在超过10亿部手机上运行,横跨8代iPhone和6代Android 架构。为了能更好地支持 / 、TensorRT,它也优化过服务器推断。考虑到PyTorch团队想开发的内容和Caffe2已经成熟的功能基本一致,因此我们决定结合PyTorch和Caffe2,让后者为PyTorch提供生产支持。
有了它,研究人员和终端用户就能在不产生可用性问题的基础上进行产品设计,而这需要创造性的解决方案。
生产!= 研究人员的痛点
提高PyTorch的生产能力意味着要引入更复杂的API和更多的可配置选项的数量。详细来说,就是一个配置内存布局(NCHW vs NHWC vs N、C/32、H、W、32,每个提供不同的性能特性),量化精度(8-bit?3-bit?),低水平内核融合(把Conv + BatchNorm + ReLU融合进一个内核),以及分离后端选项(把MKLDNN作为某几层的后端,NNPACK作为剩余层的后端)等。
PyTorch的核心目标是为研究和操作提供一个良好的平台,因此除了以上这些优化,我们也一直致力于设计一个严格的约束,以避免因完善功能牺牲用户体验。
为了做到这一点,我们这次推出了torch.jit&&一个即时(JIT)编译器,它能在运行时重写用户模型并实现快速产品化。这个新的JIT编译器还能把模型迁移到C++上,然后以Caffe2的比特精度运行。
对于Pytorch 1.0,你的代码可以持续运行,但我们没有对已有API做过多调整。
当然,这是一个可选项。用户可以使用torch.jit编译器把自己的模型导出到无Python环境并提高其性能。下面让我们对它做一下详细介绍。
torch.jit:一个为模型设计的即时编译器
我们坚信一点,如果直接用Python代码写一个模型来应用,它的适用性太低了。这也是PyTorch为什么这么灵活的原因,但有得必有失,如果用户不下指令,PyTorch就不知道接下来该运行哪一段。这对生产和自动性能优化来说是个不小的问题,因为在执行代码前,它们需要获知模型的整体情况。
为了解决这个问题,我们提供了两种从代码中恢复信息的方法,一种基于追踪本地Python代码,另一种则基于编译表示中间形态的Python语言子集。经过充分讨论后,我们认为它们在不同环境中都由突出表现,因此用户可以搭配使用。
PyTorch tracer是一个函数torch.jit.trace,它记录了当前代码区执行的所有本地PyTorch操作和它们之间的数据依赖关系。其实早在PyTorch 0.3时我们就提供了类似功能,它能被用于通过ONNX导出模型。而Pytorch 1.0的变化在于你可以在C++运行过程中就直接执行追踪,而不需要到别处。C++运行期间,Pytorch 1.0将集成Caffe2提供的所有优化和硬件集成。
而这种方法的最大好处是它并不关心你的Python代码是怎么写的,由于我们只记录本地的Pytorch操作,这些详细信息对记录的跟踪并没有影响。但它也是把双刃剑,如果一个模型中包含了循环,它会把循环展开,每做一次循环就插入一个副本,这样副本数量就多得和循环次数相等了。但另一方面,这样做适合和数据相关的一些循环,比如用于处理变化的序列,这种方法能有效地将单个长度硬编码到循环过程中。
对于不包含循环和if语句的神经网络,追踪模式是非侵入式的,它能高性能处理各种编码风格,如下所示:
# This will run your nn.Module or regular Python function with the example
# input that you provided. The returned callable
be used to re-execute
# all operations that happened during the example run, but it will no longer
# use the Python interpreter.
f torch.jit import trace
traced_model = trace(model, example_input=input)
traced_fn = trace(fn, example_input=input)
# The training loop doesn&#39;t change. Traced model behaves exactly like an
# nn.Module, except that you can&#39;t edit what it does or change its attributes.
# Think of it as a &frozen module&.
for input, target in data_loader:
loss = loss_fn(traced_model(input), target)
script模式
追踪是一种好方法,但我们希望能为一些涉及大量循环的模型,如RNN,提供同样优秀的解决方案。这就是我们接着要介绍的script模式。
在script模式下,除了无法使用一些特殊的语言功能,用户只需写一个常规的Python函数。一旦你隔离其他函数,用@script标记出你想要编译的函数,Pytorch 1.0就会为这个python函数添加注释并转换成高性能C++代码运行。这就做到了恢复恢复所有PyTorch操作及其循环、条件。它们将嵌入到我们对此函数的内部表示中,并且每次运行此函数时都会计入它们。
from torch.jit import script
def rnn_loop(x):
hidden = None
forx_tin x.split(1):
x, hidden = model(x, hidden)
优化和导出
无论最终用户用的是追踪模式还是script模式,Pytorch 1.0输出的都会是一个非Python的模型表示。它可用于模型优化,或从python中导出模型用于生产环境。
像这种将大部分模型信息提取为中间表示的做法有助于执行复杂的整体程序优化,在这个背景下,我们可以把计算分配给专门用来计算图形的AI加速器,以提高整体效率。事实上我们也正在这么做,我们已经在尝试融合操作提高小型RNN的性能,成效斐然。
它还意味着用户能使用Caffe2现有的高性能后端高效运行模型。此外,用@script标记的函数和模块还可以以动态的方式导出到ONNX,这就意味着它们可以轻松地在非Python语言环境中运行。
可用性是我们十分关注的一个点,我们知道,如果不是直接在Python里运行代码,模型后期调试起来会很麻烦,但我们希望能做更多的事,而不是把用户局限在一种编程语言上。
首先,这是一项付费服务&&如果用户不需要优化和导出模型,他们就不用在意这些新功能,也不会看到其中的缺陷。其次,追踪模式和script模式是可以逐步使用的,例如用户可以追踪部分模型、在大型未追踪模型中嵌入追踪模式、对模型的90%使用追踪、只对循环代码使用@script&&他们可以用@script编写一个函数,并让它调用一个本地python函数,如果@script函数中出现错误,他们也可以删除注释。总而言之,用户喜欢怎么调试,就可以怎么调试。
最重要的是,这些模式将被构建到PyTorch的核心中,以便与用户现有代码混合并无缝运行。
其他更新与改进
&production-support&是Pytorch 1.0最重要的特征,但作为标准发布过程的一部分,我们也会继续优化和修复PyTorch的其他内容。
在后端,PyTorch的一些更新可能会影响用户编写C和C ++的扩展。因为我们正在替换(或重构)后端ATen库,以整合来自Caffe2的功能和优化。
原文标题:迈向1.0:PyTorch和Caffe2的幸福联姻
文章出处:【微信号:jqr_AI,微信公众号:论智】欢迎添加关注!文章转载请注明出处。
发布评论请先
在 Python 中字符串连接有多种方式,这里简单做个总结,应该是比较全面的了,方便以后查阅
人工智能领域的发展离不开学者们的贡献,然而随着研究的进步,越来越多的论文出现了“标题党”、“占坑”、....
美国奥本大学、哈佛大学、牛津大学、明尼苏达州立大学和怀俄明州立大学的研究人员开发了一种可以识别、描述....
正如你所看到的,决策树非常直观,他们的决策很容易解释。 这种模型通常被称为白盒模型。 相反,正如我们....
命令行中 gcc表示我们是用gcc来编译我们的源程序,-o 选项表示我们要求编译 器给我们输出的可执....
影子“猪脸识别”应用场景广泛,其中包括猪场猪只身份识别、育种管理、猪场生产管理、猪群健康管理、智能体....
机器学习算法擅长发现大数据内的复杂模式,因此研究人员通常利用它们作出预测。
网络战愈演愈烈,网络政治干扰和政府要求为其访问软件和服务留下后门,这些都导致软件和基础设施采购过程中....
在DeDeo的主页介绍上写着,他们的研究方向是:在社会思想实验室(Laboratory for So....
“作为一个普通的核心开发者,我仍然会一直都在,而且我仍然可以指导人,或许可能有更多的时间,”他补充说....
这类系统利用用户的交互来过滤感兴趣物品。我们可以将交互的集合可视化为一个矩阵,其中每一项(i, j)....
当一个人真正想在机器学习中取得一定成就时,他需要深入微积分、线性代数,掌握一定的统计学知识,研究的深....
有缺陷的学术研究可能会误导大众,并阻碍学术未来的研究。实际上,这些问题有许多是在人工智能的历史(更广....
PYNQ全称为Python Productivity for Zynq,即在原有Zynq架构的基础上....
昨天,Python 之父 Guido van Rossum 在 Python 邮件组里发邮称,他将退....
人类在对客观世界的问题进行判断时,往往都会根据过去的经验来指导自己。
既然目的是让AI做题,我们先得有题啊!当然了,手动搜集整理是不可能的,为了创建题库,首先我们构建了一....
对新领域进行探索通常需要基于直觉,但这些直觉并没有经科学验证形成正式定义。根据我们的发现,尽管这些直....
2018 年 7 月 5 日,主题为“大数据赋能,智能创未来”的 Kyligence 融资暨新产品发....
人工智能技术,已成为当下最火热的技术之一。无论是大数据还是云计算还是互联网,这些新型的技术都在用尽全....
我们还没有办法让机器学习智能体接触到类似的“日常体验”,这意味着我们无法轻易地衡量它们将知识从现实世....
机器学习会是一个步骤,改变我们可以用计算机做的事情。它将是不同的公司的不同产品的一部分。最终,几乎所....
我们曾分享过的实时图像识别只是其中一种应用。我们还可以利用深度学习来做超分辨率。我们这次就分享一下用....
总体来说,机器学习(ML)的研究人员正在致力于数据驱动算法知识的创建与传播。
机器学习的巨大成功带来了 AI 应用的爆炸式增长以及对具备人类级别智能的自动化系统不断增长的期望。
和分类、回归方法相比,无监督学习算法的主要特性是输入数据是未标注过的(即没有给定的标签或分类),算法....
我是一个Python迷,并且对迷宫的生成和迷宫解决的办法非常感兴趣。我很羡慕别人能够做出生成迷宫的动....
换个不严谨的白话说法,深度学习的层层网络可以从数据中自动学习到有用的、高度抽象的特征,而最终目的是为....
虚线表示的是那些决策函数等于 1 或 -1 的点:它们平行,且到决策边界的距离相等,形成一个间隔。训....
虚线表示的是那些决策函数等于 1 或 -1 的点:它们平行,且到决策边界的距离相等,形成一个间隔。训....
鼠标事件监听器是一个线程,所有的回调函数都会在独立的线程中运行。调用pynput.mouse.Lis....
苹果公司今天上午发表声明,将合并机器学习与Siri团队,由在谷歌工作八年,前谷歌AI元老John G....
3月15日,腾讯AI Lab第二届学术论坛在深圳举行,聚焦人工智能在医疗、游戏、多媒体内容、人机交互....
苹果对用户的数据保护措施使得 Siri 的研发人员缺乏对相关数据的访问权限,这成为制约 Siri 发....
研究者还使用深度神经网络实现了这种基于反馈的树搜索算法并在《王者荣耀》1v1 模式上进行了测试。为了....
很多机器学习问题是深度为2的子案例,例如,输入层和输出层之间的一个隐含层。通常假设网络的结构、数据分....
Wave Computing自2010年以来一直从事机器学习和人工智能。该公司是MIPS近期的客户,....
消息报道,今年7月份中国政府出台了一项新战略,其目标明确:三年内在人工智能技术发展方面赶超美国,到2....
使用血液检测和机器学习技术,可以预测健康个体是否有患急性骨髓性白血病(AML)的风险。
人类一直希望能创造出和自己一样的智慧机器,在人与机器之间建立更为牢固的伙伴关系。但其中的关键在于我们....
TypeScript 似乎越来越受广大开发者的欢迎,上个月的榜单中,TypeScript首次进入 T....
“2018世界移动大会·上海”期间,诺基亚携手中国电信、英特尔对虚拟现实游戏进行联合演示
集成了机器学习与机器视觉的系统可应用在多个制造业范畴,机器视觉透过传感器搜集数据,机器学习可藉数据增....
基于云的机器学习和深度学习一再被误用。这多半都可以轻松解决,当然,基于云的机器学已得到了广泛的使用。....
解决实际应用中此类问题的主要思想就是限制模型的使用场景,这样对目标物体的预测假设就会匹配训练数据。一....
“第四届世界互联网大会”在浙江乌镇开幕。领先的人工智能技术与服务提供商第四范式受邀参加大会,并发布了....
然而,物联网数据的一个最显著的特征在于其粗糙性:因为物联网设备通过各种复杂的传感器收集数据,所产生的....
另一位发言者是Dean Kamen,他是DEKA研发中心的创始人,他指出人们对物联网隐私问题以及智能....
近日,打开科技新闻,映入眼前的是,阿里推全球首家人工智能服饰店、百度发布专门用于 AI 大规模运算的....
近日,芬兰阿尔托大学、瑞士苏黎世联邦理工工学院、俄罗斯莫斯科物理技术学院的科研人员组成的一支科研团队....
供应链服务
版权所有 (C) 深圳华强聚丰电子科技有限公司
电信与信息服务业务经营许可证:粤B2-

我要回帖

更多关于 torch火花塞 的文章

 

随机推荐