谷歌开源张量网络库TensorNetwork,GPU处理提升100倍!
编译 | 琥珀
出品 | AI科技大本营(ID:rgznai100)
世界上许多最严峻的科学挑战,如开发高温超导体和理解时空的本质,都涉及处理量子系统的复杂性。然而,这些系统中量子态的数量程指数级增长,使得暴力计算并不可行。为了解决该问题,数据结构采用了张量网络的方式。张量网络让人们关注与现实世界问题最相关的量子态,如低能态。张量网络已经越来越多地在机器学习中得到应用。
然而,目前仍存在相当多的一些挑战阻碍了其在机器学习社区中的广泛使用:1)用于加速硬件的生产级张量网络库还不能用于大规模运行张量网络算法;2)大多数张量网络文献是面向物理应用的,并产生了一种错误的印象,即需要量子力学方面的专业知识来理解算法。
为了解决这一问题,谷歌 X 实验室与加拿大 Perimeter 理论物理研究所(Perimeter Institute for Theoretical Physics )的研究人员合作开发了张量网络 TensorNetwork,以 TensorFlow 作为后端,针对 GPU 处理进行了优化。与在 CPU 上计算工作相比,可以实现高达 100 倍的加速。这是一个全新的开源库,旨在提高张量计算的效率。
据悉,研究人员已经发布了一些列论文对张量网络的概念、特性以及应用特例等方面进行了详细阐释。
论文链接:
https://arxiv.org/abs/1905.01330
https://arxiv.org/abs/1905.01331
GitHub 链接:
https://github.com/google/tensornetwork
工作原理
张量是一种多维数组,按照顺序进行分类。例如,一个普通数零阶张量,也称为标量,一个向量是一阶张量,一个矩阵是二阶张量。虽然低阶张量可以很容易地用数字数组或像 Tijnklm 这样的数学符号来表示,但一旦开始讨论高阶张量,这个符号就变得非常麻烦。
这一点上,使用图解记数法是非常有用的,在这种记数法中,人们只需画一个有许多条线或” 腿 “的圆(或其他形状)。在这个符号中,标量只是一个圆,向量只有一条腿,矩阵有两条腿等。张量的每条腿也有大小,也就是腿的长度。
张量的图解符号
以这种方式表示张量的好处是简洁地编码数学运算,例如,将一个矩阵乘以一个向量得到另一个向量,或者两个向量相乘得到标量。这个过程被称为张量收缩。
张量收缩的图解表示法
向量和矩阵乘法以及矩阵迹线(即矩阵对角元素的总和)。
除了这些案例之外,还有以张量收缩模式进行编码以形成一个新张量的图形方式。每个组成张量都有一个由自己的腿数决定的顺序。连接的腿在图中形成一条边,代表收缩,而剩余悬空腿的数量决定了合成张量的顺序。
左:四个矩阵乘积的表示,即 tr(ABCD),它是一个标量。右:三个三阶张量收缩,三条腿悬空,产生一个新的三阶张量。
虽然这些例子非常简单,但张量网络通常代表以各种方式收缩的数百个张量。用传统的符号来描述这样一件事情是非常模糊的,这也是 Roger Penrose 在 1971 年发明图解符号(diagrammatic notation)的原因。
实践过程
以一些黑白图像为例,每个图像可以被看做是 N 个像素值的列表。单个图像中的单个像素可以被独热编码( one-hot-encoding)成二维向量,并且通过这些像素编码组合在一起,我们可以得到 2N 个维独热编码的结果。我们可以将高维向量转化为 N 阶张量,然后将图像集合中所有张量相加,得到量 Ti1,i2,...,iN 的集合。
这听起来像是一件非常浪费时间的事情。因为以这种方式对约 50 像素的图像进行编码已经占用了数千兆字节的内存。这正是张量网络的作用所在。研究人员没有直接存储或操纵张量 T,而是将张量 T 作为张量网络内的多个小的张量组合。结果证明这非常有效。例如,流行的矩阵乘积态(matrix product state,MPS)网络可以将 T 表示为 N 个较小的张量,从而总参数量为 N 的线性级,而不是指数级。
高阶张量 T 用矩阵乘积态张量网络中的许多低阶张量来表示。
但在有效构建或操纵大型张量网络的同时又能始终避免使用大量内容的需求,是不太明显的。但事实证明,这在许多情况下是可能的,这也是张量网络广泛用于量子物理和机器学习领域的原因。Stoudenmire 和 Schwab 使用这种编码来构建图像分类模型,展示了张量网络的新用途。而 TensorNetwork 库旨在推进这类工作,研究人员在 TensorNetwork 相关论文中介绍了该库如何应用于张量网络的操作。
在物理场景中的应用性能
TensorNetwork 是一个针对张量网络算法的通用库,因此它适用于物理学场景。逼近量子态是张量网络在物理学中的一个典型用例,可说明张量网络库的能力。在另一篇论文《TensorNetwork on TensorFlow: A Spin Chain Application Using Tree Tensor Networks》中,研究人员提出了一种近似树张量网络(tree tensor network,TTN),并使用张量网络库实现了该算法。此外,研究人员还对比了 CPU 和 GPU 的情况,发现在使用 GPU 和张量网络库时,计算速度显著提高了近 100 倍。
计算时间作为连接维度的函数 X。连接维度( bond dimension )决定了张量网络中张量的大小。连接维度越大意味着张量网络约强大,但这个过程也需要更多的计算资源。
总结及未来工作
本文是讲述 TensorNetwork 实际应用案例的第一篇文章,后续的论文中,研究人员将使用 TensorNetwork 在 MNIST 和 Fashion-MNIST 上执行图像分类,后面还将包括时序分析、量子电路仿真等。研究人员希望 TensorNetwork 能成为物理学家和机器学习从业者的宝贵工具。
相关链接:
https://ai.googleblog.com/2019/06/introducing-tensornetwork-open-source.html
(*本文为 AI科技大本营编译文章,转载请微信联系1092722531)
◆
精彩推荐
◆
6月29-30日,2019以太坊技术及应用大会 特邀以太坊创始人V神与以太坊基金会核心成员,以及海内外知名专家齐聚北京,聚焦前沿技术,把握时代机遇,深耕行业应用,共话以太坊2.0新生态。
扫码或点击阅读原文,既享优惠购票!
推荐阅读
Python从入门到精通,这篇文章为你列出了25个关键技术点(附代码)
基础必备 | Python处理文件系统的10种方法
B站超全分享!2万人收藏的免费计算机科学速成课
如何正确的获取数据?
苹果 SwiftUI 踢馆谷歌 Flutter!
惊!为拯救美国落伍的 STEM 教育,纷纷出手教老师编程?!
超级黑幕:开发者千万别被算法迷惑了!
程序员爬取 42 年高考数据,告诉你高考为什么这么难?
把病毒写到区块链上可以永远不死? 我们做了一个大胆的实验…… | 技术头条
新一代私有云来了!看透基于开源生态的产品化
点击阅读原文,查看更多精彩内容。
相关文章:

Python基础之逻辑运算符
1.在没有()的情况下,not的优先级高于and,and的优先级高于or,即优先级关系为()>not>and>or,同一优先级从左往右计算。 例题,判断下列逻辑语句的结果: 3 > 4 or 4 < 3 and 1 1 1 < 2 a…

《Android开发从零开始》——11.AbsoluteLayoutFrameLayout学习
本节课的主要内容有: 1.介绍AbsoluteLayout布局的使用 2.介绍FrameLayout布局的使用 课程下载地址:http://u.115.com/file/f15a9d5411 课件及地址:http://u.115.com/file/f1b56ce345 【转】转载于:https://blog.51cto.com/professor/1573001

【FFmpeg】ffmpeg命令详解(三)高级选项
ffmpeg命令详解(三)高级选项 1、-map2、-ignore_unknown3、-copy_unknown4、-map_channel5、-map_metadata6、-map_chapters7、-benchmark8、-benchmark_all9、-timelimit10、-dump11、-hex12、-readrate13、-re14、-vsync15、-frame_drop_threshold16、-async17、-adrift_th…

重磅!Google推出了Python最牛X的编辑器......
随着和大数据、人工智能绑定在一起,Python可畏是越来越厉害了!前几天, PYPL(即编程语言流行指数,基于 Google 搜索频率而定)出炉了 6 月编程语言排行榜,Python 拿下 NO.1,成为最流行的编程语言。…

ubuntu16.04 ROS安转及RVIZ启动
1、软件中心配置 首先打开软件和更新对话框,打开后按照下图进行配置(确保你的"restricted", "universe," 和 "multiverse."前是打上勾的): 2、添加源 $ sudo sh -c echo &qu…

Ubuntu下自动挂载Windows分区的方法
用过Ubuntu的都知道,在Ubuntu开机时,Windows的文件系统是不会自动挂载的,每次开机都得手动挂载,确实不方便。多次的手动挂载实在是让我有些烦躁了,遂决定要让我的系统开机时自动挂载文件系统。看了一些网上的教程&…

poj3009
一、题意:给定一个矩形区域,代表冰球场。每个单元格可有四种数值:2是冰球的起始位置;3代表冰球最后需要到达的位置;0代表空,球可通过;1代表障碍物,球碰撞一次后,1变成0&a…

谷歌开源新模型EfficientNet,或成计算机视觉任务新基础
作者 | Mingxing Tan,Quoc V. Le,Google AI译者 | 刘畅责编 | 夕颜出品 | AI科技大本营(id:rgznai100)开发一个卷积神经网络(CNN)的成本通常是固定的。在获得更多资源时,我们通常会按…

【FFmpeg】使用过的命令汇总(持续更新中...)
1、将输出文件的视频比特率设置为 64 kbit/s: ffmpeg -i input.avi -b:v 64k -bufsize 64k output.avi2、将输出文件的帧速率强制为 24 fps: ffmpeg -i input.avi -r 24 output.avi3、将输入文件的帧速率(仅对原始格式有效)强制为 1 fps,将输出文件的帧速率强制为 24 fp…

HLG 1481 Attack of the Giant n-pus【二分+二分图完全匹配】
题意: 有 p 个水手和一个章鱼,章鱼有 n 个脚,知道了所有单位的坐标,和船长以及船员的速度,船长想去攻击章鱼的头部,但是只有在章鱼所有的脚都被水手控制的情况下才会开始朝章鱼头部进攻,问如何分…

美亚排名超高的Docker入门书,不止简单易懂
在美国亚马逊,有一本书的影响力超高的Docker入门书,在操作系统分类中排行第一,超越了众多实力派Docker书,众多五星好评。也许你有所耳闻,这本书就是《深入浅出Docker》。这是一本关于Docker的图书。这本书的宗旨是从零…

虚拟机配置参数
标准参数:保证所有JVM的实现都可以支持-client设置Hotspot client jvm,64位jdk会忽略该参数并设置-server-Dpropertyvalue用于设置系统属性,如果value中有空格,则需要设置-Dproperty"value value"-server选择Hotspot Se…

【Qt】QAudioDeviceInfo获取不到音频设备
1、问题描述 使用QAudioDeviceInfo在开发机上可以获取本地的音频设备,但是在目标机上获取不到。 已经将libQt5Multimedia库拷贝到目标机上(如果没有将会报错)。 2、原因 没有将audio的插件拷贝到目标机上,audio插件在Qt安装目录…

异常:android.os.NetworkOnMainThreadException
Android 4.1项目:使用新浪微博分享时报: android.os.NetworkOnMainThreadException 网上搜索后知道是因为版本问题,在4.0之后在主线程里面执行Http请求都会报这个错,也许是怕Http请求时间太长造成程序假死的情况吧。那么网上的朋友…

阿里带火的中台到底是什么?白话中台战略
作者 | 王健,ThoughtWorks首席咨询师。 十多年国内外大型企业软件设计开发,团队组织转型经验。一直保持着对技术的热爱,热衷于技术分享。目前专注在企业平台化转型、中台战略规划,微服务架构与实施,大型遗留系统服务化…

【Qt】Ubuntu18.04下解决Qt出现qt.qpa.plugin:Could not load the Qt platform plugin “xcb“问题
1、问题描述 在ubuntu18.04中第一次安装QT5,运行时报错 qtcreator.sh qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "" even though it was found. This application failed to start because no Qt platform plugin could be init…

Bootstrap4 更新笔记
在bootstrap4里, 1. 旧版本bootstrap well变成了什么? well原本是‘’淡灰墙‘’样式。 Bootstrap 4 Beta card-block is now card-body, and bg-faded is now bg-light: <div class"card card-body bg-light"> Well </div>ref&am…

二、JavaScript基础 学好jQuery要了解的
JavaScript与ECMAScript ECMAScript 通过ECMA-262标准的脚本程序设计语言 ECMAScript标准下有 javascript jscript actionscript JavaScript分为值类型和引用类型两大类,有时也称为原始值和引用值。值类型:存储在栈(stack)中,一个值类型的变量…

一文综述经典的深度文本分类方法
作者 | 何从庆转载自AI算法之心(ID:AIHeartForYou)笔者整理最近几年比较经典的深度文本分类方法,希望帮助小伙伴们了解深度学习在文本分类中的应用。Convolutional Neural Networks for Sentence Classification (EMNLP 2014)Kim在EMNLP2014…

【FFmpeg】便捷函数汇总(持续更新中...)
音频相关: 1、由通道布局获取通道数 int av_get_channel_layout_nb_channels(uint64_t channel_layout);2、由通道数获取默认的通道布局 int64_t av_get_default_channel_layout(int nb_channels);3、返回采样格式对应的字符串名字 const char *av_get_sample_fm…

云服务器代金券
最近腾讯云与阿里云的促销活动都很好,有需要云服务器的可以领取代金券购买 https://www.art-china.club/ 至于配置调试的问题,可以问我,友情帮忙。转载于:https://blog.51cto.com/dnuser/2167896

NLP最新资源:论文、代码、博客、视频一应俱全
整理 | Rachel出品 | AI 科技大本营(ID:rgznai100)【导读】在近几年,NLP 领域得到了快速的发展,包括 ELMo ,BERT在内的新方法不断涌现,显著提高了模型在一系列任务的表现。在本文中,…

android在线播放音乐
2019独角兽企业重金招聘Python工程师标准>>> android在线音乐 一种方法是调用android自带的播放器 //调用系统自带播放器Intent intent new Intent();Uri uri Uri.parse("http://mul1.tximg.cn/music/group/bbs/mp3/44/100715/1279159638887.mp3?z909255638…

head和tail命令详解
基础命令学习目录首页 原文链接:https://www.cnblogs.com/amosli/p/3496027.html 当要查看上千行的大文件时,我们可不会用cat命令把整个文件内容给打印出来,相反,我们可能只需要看文件的一小部分地内容(例如文件的前十…

【FFmpeg】ffmpeg工具源码分析(四):filter(过滤器、滤镜)详解
1、简介 FFmpeg用来处理音视频,实现处理功能的核心就是filter(滤镜),和我们使用的美颜功能的滤镜意思差不多,FFmpeg的filter(滤镜)不仅可以处理视频,还能处理音频、字幕等。 官方说明: 在编码之前,ffmpeg可以使用 libavfilter 库中的过滤器处理原始音频和视频帧。几…

【ZooKeeper Notes 14】数据模型
转载请注明:ni掌柜 nileadergmail.com本文主要讲述ZooKeeper的数据模型,包括ZooKeeper的数据视图,节点的层次结构以及节点类型等基本属性。Zookeeper的视图结构类似标准的Unix文件系统,但是没有引入文件系统相关概念:目…

李理:为什么说人工智能可以实现?
作者 | Just出品 | AI科技大本营(ID:rgznai100)尽管市面上关于深度学习的书籍很多,环信 AI 负责人李理认为大部分只关注理论或只关注实践。于是,基于他对深度学习多年的理解,自己着整理手写了一本深度学习理论与实战书…

【FFmpeg】FFmpeg编解码H264产生马赛克、伪影的解决方法
1、问题描述 使用FFmpeg编码H264,再解码显示时,产生马赛克:有时是在画面静止时,静止时间越长,马赛克、伪影越多;有时是在画面切入切出时;有时是在网络带宽不够时 2、原因分析 2.1 丢帧 网络状况差的情况下(带宽不足),容易丢帧,在视频画面播放过程中,若I帧丢失了,…

LINUX内核升级
内核版本是2.6.18,新的内核是2.6.26。 1.下载新内核,下载网站www.kernel.org 2.copy内核到/usr/local/src下 3.解压内核 解压内核命令 tar -xjvf linux-2.6.26.tar.bz2 4.清理以前编译所生成的文件 命令为 make distclean,如果以前没有编…

我在美团的这两年,想和你分享
作者 | 石晓文来源 | 小小挖掘机(ID:wAIsjwj)012017.08.14,结束了两周的等待,如愿以偿开始了自己的美团实习生活,本来抱着三五个月走人,争取下一份实习的心态,没想到一直到转为暑期实…