《2022年深度学习进阶笔记之.docx》由会员分享,可在线阅读,更多相关《2022年深度学习进阶笔记之.docx(81页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选学习资料 - - - - - - - - - 深度学习进阶笔记之十| 那些 TensorFlow上好玩的黑科技引言TensorFlow是 Google 基于 DistBelief进行研发的其次代人工智能学习系统,被广泛用于语音识别或图像识别等多项机器深度学习领域;其命名来源于本身的运行原理; Tensor (张量)意味着 N 维数组, Flow (流)意味着基于数据流图的运算,TensorFlow代表着张量从图象的一端流淌到另一端运算过程,析和处理的过程;是将复杂的数据结构传输至人工智能神经网中进行分TensorFlow 完全开源,任何人都可以使用;可在小到一部智能手机、大到数千台数据中心
2、服务器的各种设备上运行;机器学习进阶笔记 系列将深化解析 TensorFlow 与大家一起走上机器学习的进阶之路;系统的技术实践, 从零开头,由浅入深,名师归纳总结 - - - - - - -第 1 页,共 48 页精选学习资料 - - - - - - - - - 本文属于介绍性文章, 其中会介绍很多TensorFlow的新 feature和 summit上介绍的一些有意思的案例,文章比较长,可能会花费 30 分钟到一个小时Google 于 2022 年 2 月 16 日(北京时间)凌晨 2 点在美国加利福尼亚州山景城举办了首届 TensorFlow 开发者峰会; Google 现场宣布全球先
3、进的深度学习开源框架 TensorFlow正式对外发布 V1.0 版本,并保证 Google 要求;的本次发布版本的 API 接口满意生产环境稳固性TensorFlow 在 2022 年年底一显现就受到了极大的关注,经过一年多的进展,已经成为了在机器学习、深度学习项目中特别受欢迎的框架之一;自发布以来,TensorFlow 不断在完善并增加新功能,直到在这次大会上发布了稳固版本的 TensorFlow V1.0;这次是谷歌第一次举办的 TensorFlow 开发者和爱好者大会,我们从主题演讲、好玩应用、技术生态、移动端和嵌入式应用多方面总结这次大会上的内容,期望能对 TensorFlow 开发
4、者有所帮助;TensorFlow: 为大众预备的机器学习框架TensorFlow 在过去获得成果主要有以下几点:. TensorFlow 被应用在 Google 很多的应用包括: Gmail, Google Play Recommendation, Search, Translate, Map 等等;. 在医疗方面, TensorFlow 被科学家用来搭建依据视网膜来预防糖尿病致盲(后面也提到 Stanford 的 PHD 使用 TensorFlow 来猜测皮肤癌,相关工作上了 Nature 封面);. 通过在音乐、绘画这块的领域使用 TensorFlow 构建深度学习模型来帮忙人类更好地懂得
5、艺术;名师归纳总结 - - - - - - -第 2 页,共 48 页精选学习资料 - - - - - - - - - .使用 TensorFlow框架和高科技设备, 构建自动化的海洋生物检测系统,用来帮忙科学家明白海洋生物的情形;.TensorFlow在移动客户端发力,有多款在移动设备上使用TensorFlow做翻译、风格化等工作;. TensorFlow 在移动设备 CPU(高通 820 )上,能够达到更高的性能和更低的功耗;. TensorFlow ecosystem 结合其他开源项目能够快速地搭建高性能的生产环境;. TensorBoard Embedded vector 可视化工作.
6、 能够帮忙 PHD/ 科研工作者快速开展 project 讨论工作;Google 第一代分布式机器学习框架 DistBelief 不再满意 Google 内部的需求, Google 的小伙伴们在 DistBelief 基础上做了重新设计,引入各种运算设备的支持包括CPU/GPU/TPU ,以及能够很好地运行在移动端,如安卓设备、ios 、树莓派 等等,支持多种不同的语言(由于各种 high-level 的 api ,训练仅支持 Python ,inference 支持包括 C+ ,Go ,Java 等等),另外包括像 TensorBoard 这类很棒的工具,能够有效地提高深度学习讨论工作者的效
7、率;TensorFlow 在 Google 内部项目应用的增长也特别快速: 在 Google 多个产品都有应用如:Gmail ,Google Play Recommendation, Search , Translate , Map 等等;有将近名师归纳总结 100 多 project和 paper 使用 TensorFlow做相关工作第 3 页,共 48 页- - - - - - -精选学习资料 - - - - - - - - - TensorFlow在过去 14 个月的开源的时间内也获得了很多的成果,包括475+ 非 Google的 Contributors,14000+ 次 commit
8、 ,超过 5500 标题中显现过 TensorFlow 的 github project 以及在 Stack Overflow 上有包括 5000+ 个已被回答 的问题,平均每周 80+ 的issue 提交;名师归纳总结 过去 1 年, TensorFlow从刚开头的 0.5 ,差不多一个半月一个版本: 第 4 页,共 48 页- - - - - - -精选学习资料 - - - - - - - - - TensorFlow 1.0 的发布TensorFlow1.0 也发布了,虽然改了好多 api ,但是也供应了 tf_upgrade.py 来对你的代码进行更新; TensorFlow 1.0
9、在分布式训练 inception-v3 模型上,64 张 GPU 可以达到 58X的加速比,更敏捷的高层抽象接口,以及更稳固的 API;New High Level API 对于新的抽象接口, TensorFlow相对于其他 DeepLearning FrameWork做的比较好,layers 能让人很简洁 build 一个 model ,基于 layer 之上的包括 TF.Learn 里面仿照scikit-learn风格的各种 estimator设计以及之后将融入TensorFlow 官方支持的 Keras ,能够让小伙伴用几行配置模型结构、运行方式、模型输出等等 Estimator ,所谓
10、的 model in box,比如 lr ,kmeans 这类;;在这层之上就有 canned 名师归纳总结 - - - - - - -第 5 页,共 48 页精选学习资料 - - - - - - - - - Broad ML Support 在 TensorFlow 中有一些兴奋的机器学习的算法实现,如 LR, SVM 、 Random Forest,在 TF.Learn 中有很多常用的机器学习算法的实现,用户可以很快的使用,而且 API 风格和scikit-learn 很类似,而且在后续的 video 提到会有分布式的支持;XLA: An Experimental TensorFlow C
11、ompiler TensorFlow XLA能够快速地将 TensorFlow转成比较底层的实现(依靠device ),这里后面有个 talk ,具体叙述了 XLA;广泛的合作.Included in IBMs PowerAI .Support movidus myriad 2 accelerator 第 6 页,共 48 页名师归纳总结 - - - - - - -精选学习资料 - - - - - - - - - .Qualcomms Hexagon DSP 8倍加速,这里仍请了Qualcomm的产品负责人来站台 TensorFlow In Depth TensorFlow在 research
12、 和 production上有很好的优势,如下图:在模型训练上, 1 机 8 卡的性能无论是在一些标准的基准测试或者是真实数据上都有比较好的加速比:名师归纳总结 - - - - - - -第 7 页,共 48 页精选学习资料 - - - - - - - - - 当然在多机分布式训练上,能够达到64 张 GPU 上 58 倍的加速比:.TensorFlow被一些顶尖的学术讨论项目使用:第 8 页,共 48 页Neural Machine Translation .Neural Architecture Search .Show and Tell 名师归纳总结 当然 TensorFlow在生产上也
13、被广泛应用:- - - - - - -精选学习资料 - - - - - - - - - 如 Mobile Google Translate,Gmail 等等,也被国内外很多大厂使用做为模型训练的工具;这些都是 Jeff Dean 在 Keynote 的内容讲到的内容,内容有点多,而且个人感觉这群 google 的小伙伴的 ppt 做的有点任性,不过谁叫他们牛逼呢,接下来几个 talk 比较有技术含量,信任各位会更加有爱好;好玩的应用案例皮肤癌图像分类皮肤癌在全世界范畴内影响深远,患病人数众多, 严峻威逼身体机能; 所幸医疗机构统计皮名师归纳总结 肤癌在早期的治愈率是98% ,更值得庆幸的是在这
14、样一个时代,智能终端能够在早期准时第 9 页,共 48 页发觉,及早预防(到2022 ,估计全球有 61 亿台智能手机);- - - - - - -精选学习资料 - - - - - - - - - 这位小哥做的工作是啥呢,他拿到了一批皮肤癌的数据,然后使用一个pretrained的inception-v3对数据来做 finetuning,在手机上做 inference: 生成结果:使用 Tensorflow在手机上很简洁搭建,完成一个app 用来做早起皮肤癌的检测:名师归纳总结 - - - - - - -第 10 页,共 48 页精选学习资料 - - - - - - - - - 相关成果发表在
15、 Nature ,而且在 Nature 的封面,这是一个特殊胜利地通过运算机视觉及深度学习相关的技术, 利用廉价的移动设备, 能够很有效地检测是否有皮肤癌,大大节约了医疗检测的成本,信任在将来会有更多相关的技术显现;利用 AI 猜测糖尿病,预防失明这个 talk 讲的前面也提到的通过视网膜图像猜测糖尿病,预防失明:名师归纳总结 - - - - - - -第 11 页,共 48 页精选学习资料 - - - - - - - - - 通过视网膜图片猜测糖尿病是一个困难的问题,度学习却可以帮忙我们:即使是专业的医生, 也很难去判定, 但是深通过收集适量的医疗数据,构建一个 26layers 的深度卷积
16、网络,我们可以让网络自动学习这些图像中的 feature ,来获得较高的分类精确率,而这个是人眼很难解决的;这里有一个 demo 的演示:名师归纳总结 - - - - - - -第 12 页,共 48 页精选学习资料 - - - - - - - - - 模型的评估比专业医生对比,F-score 为 0.95 ,比专业医生的中位数0.91 仍高,这个太厉害了,信任不久会看到深度学习在医疗,特殊是这种病症图像分析上有很多惊人的成果;Wide & Deep In Google Play 这项技术有段时间特殊火,被用来做举荐相关的应用,第一说明下Memorization和Generalization:
17、 名师归纳总结 - - - - - - -第 13 页,共 48 页精选学习资料 - - - - - - - - - 模型的基本结构如下:整个举荐会同时考虑到商品的相关性以及一些推理关系,例如老鹰会飞、 麻雀会飞这类规律名师归纳总结 属于 Memorization, 而说带翅膀的动物会飞这属于Genralization;第 14 页,共 48 页在具体的应用场景,如Google Play的 App 举荐:- - - - - - -精选学习资料 - - - - - - - - - 这里构建一个如下图的网络来进行训练 joint training: 为啥要 joint training,而不是直接
18、用 deep 和 wide 的来做 ensemble呢? 这里做这个给名师归纳总结 出一个说明,由于wide 和 deep 会相互影响,结果精确度会高,并且model会比较小:第 15 页,共 48 页- - - - - - -精选学习资料 - - - - - - - - - 而上面提到的 Wide & Deep Learning Model在 Tensorflow下仅仅只需要 10 行代码来实现 突然想起了那个 100 美元画一条线的故事 :Magenta: 音乐和艺术生成这个项目讲的是利用深度学习来做一些艺术相关的工作,项目地名师归纳总结 - - - - - - -址:tensorflow
19、-magenta有一些很好玩的东西,如风格化,生成艺术家风格的音乐,利用深度学习模型模拟人类对艺术的想象力,制造出属于DeepLearning的艺术风格;想要详细明白的可以看看这里的介绍welcome-to-magenta,仍有前面提到的 github上 project ;第 16 页,共 48 页精选学习资料 - - - - - - - - - DeepMind 团队所做的一些开发工作DeepMind在被 Google 收购之后, 也挑选 TensorFlow作为其深度学习相关讨论的平台,然后做了很多很有意思的东西:Data Center Cooling 这是 Google 在全世界各地如干
20、个数据中心之一 : 然后这群 Google的小伙伴做了些什么事情呢?名师归纳总结 - - - - - - -第 17 页,共 48 页精选学习资料 - - - - - - - - - Google 的小伙伴利用强化学习,是的!你没有听错,应用在AlphaGo上的一种技术来做Gorila 数据中心冷却设备的自动掌握 ,并且成效特别显著:Gorial 是 DeepMind 下的一个强化学习的框架,基于 TensorFlow 的高级 API 实现,很稳定,只需要更换其中极少部分代码就可以完成新的试验,支持分布式训练,特别高效,并且训练好的模型可以通过 TensorFlow Serving 快速地部署
21、到生产环境;AlphaGo 这个信任不说,大家都知道的,第一次在围棋上打败人类,然后升级版的 Master 连续 60盘不败,原理不说了,网络上很多分析文章,贴两张图聊表敬意:名师归纳总结 - - - - - - -第 18 页,共 48 页精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 19 页,共 48 页精选学习资料 - - - - - - - - - WaveNet :语音音频合成这里 DeepMind的小哥演示了 WaveNet的一些 demo ,具体的可以参见 这里 来明白; 贴一些成效对比:XLA 以及 Keras 与 TensorF
22、low 的融合名师归纳总结 XLA 与 TensorFlow的结合TensorFlow能TensorFlow的各方面的优势都很突出,除了在速度这块有些不足,假如,在速度上做进一步优化,会怎么样呢?第 20 页,共 48 页- - - - - - -精选学习资料 - - - - - - - - - 是的, Google的开发者也意识到这个问题,于是有了这个XLA , XLA 的优势:. 提高执行速度,编译子图会削减生命周期较短的 op 的时间,来至少 TensorFlow 执行是的时间;融合 pipelined 的 op 来削减内存的开销;. 通过分析和调剂内存需求,来削减很多中间结果的缓存.
23、削减定制化 op 的依靠,通过供应自动化融合底层 ops 的性能来达到原先需要手工去融合定制化 op 的性能. 削减移动设备的内存占用,使用 AOT 编译子图来削减 tensorflow 执行时间,能够共享 object/header file pair 给其他应用,能够在 Mobile Inference 上削减几个数量级的内存占用.提高了程序的可移植性,能够在不转变大部分tensorflow源码的前提下,很简洁地更换以适应新的硬件设备,XLA 主要包括两种使用方式:JITJust in time 能够自动将 Graph 中的部分子图通过 XLA融合某些操作来削减内存需求提高执行速度;AOT
24、Ahead of time 可以提前将 Graph 转换为可以执行的源码,削减生成的可执行文件的大小,削减运行的时间消耗,一个很明显的名师归纳总结 - - - - - - -应用场景是模型在移动设备上的Inference优化;由于 XLA 原理涉及到编译器,这块不是我善于的地方,所以这里就这样过了,假如有爱好的小伙伴可以关注下xla docs 仍有此次 TensorFlow Dev Summit 上 XLA 的 talk XLA: TensorFlow, Compiled.再贴几张 XLA 的一些评测性能:第 21 页,共 48 页精选学习资料 - - - - - - - - - Keras
25、与 TensorFlow 的集成名师归纳总结 - - - - - - -第 22 页,共 48 页精选学习资料 - - - - - - - - - Keras 是一个可以在很多平台上应用的深度学习框架,” An API Specify for building deep learning models across many platforms” ; TensorFlow 已经会在官方 TensorFlow 支持,1.1 会在 tf.contrib,1.2 会 tf.keras ,而且会支持 TensorFlow Serving,是不是很心动;Keras 的作者在 TensorFlow Dev
26、 Summit 上讲了以下内容:所以之后 Keras 的用户可以更快的在TensorFlow 的框架下做出相应地模型, 能更便利地进行分布式训练, 使用 Google 的 Cloud ML , 进行超参,仍有更更重要的: TF-Serving ; 这名师归纳总结 些 feature 现在似乎仍没有支持,不过应当很快了,大家可以期望下;这里, Francois 第 23 页,共 48 页Chollet使用 Keras 构造了一个 Video-QA的 model ,这个模型在 Keras 的官方文档也有描述,具体可以去那边看看,大致是这样一个场景: - - - - - - -精选学习资料 - -
27、- - - - - - - 这样一个场景, 利用原生的 python构造太难了, 但是用 Keras ,只需要考虑设计你的模型,如何来完成类似的功能,完全不用担忧coding的实现,如图是一个类似问题的一个简洁地模型设计:video = tf.keras.layers.Inputshape=None, 150, 150, 3 cnn = tf.keras.applications.InceptionV3weights=imagenet, include_top=False, pool=avg 名师归纳总结 - - - - - - -第 24 页,共 48 页精选学习资料 - - - - - -
28、 - - - cnn.trainable = False encoded_frames = tf.keras.layers.TimeDistributedcnnvideo encoded_vid = tf.layers.LSTM256encode_frames question = tf.keras.layers.Inputshape=100, dtype=int32 x = tf.keras.layers.Embedding10000, 256, mask_zero=Truequestion encoded_q = tf.keras.layers.LSTM128x x = tf.keras.
29、layers.concatencoded_vid, encoded_q x = tf.keras.layers.Dense128, activation=tf.nn.relux outputs = tf.keras.layers.Dense1000x model = tf.keras.models.Modevideo, question, outputs pileoptimizer=tf.AdamOptimizer, loss=tf.softmax_crossentropy_with_logits 这里代码是无法在现在的tensorflow版本上跑的,假如想明白下keras 上构建上述模型的简
30、便性 ,可以看看 这里 . Keras 在构造深度模型的便利是大家众所周知的,值得期望之后名师归纳总结 Keras 在 TensorFlow的更新:第 25 页,共 48 页- - - - - - -精选学习资料 - - - - - - - - - TensorFlow High-Level APIs: Models in a Box TensorFlow 在敏捷性、可扩展性、可保护性上做的很好,但是现在在高级 api 、模块式算法这块原先都仍不足,但是 Google Brain 的工程师在这个 talk 上介绍了一些 High-level API 的相关工作;. layers: 封装了一些层
31、的操作, 简化用原生 TensorFlow 源码,比如 new 一个 variable来做 weight 等等;. Estimator or Keras: 封装了一些更高层的操作包括,train 和 evaluate 操作,用户可以通过几行代码来快速构建训练和评估过程;.Canned Estimators: 更高级 API,所谓的 Models in a box 第 26 页,共 48 页名师归纳总结 - - - - - - -精选学习资料 - - - - - - - - - 构造左图中所示的深度网络只需要如图右中的七行代码 快可以通过 api 调用完成:结果是 Model in a Box
32、area = real_valued_columnsquare_foot rooms = real_valued_columnnum_rooms 同样,构建训练、评估、猜测也很zip_code = sparse_column_with_integerized_featurezip_code, 100000 regressor = LinearRegressorfeature_columns=area, room, zip_code classifier.fittrain_input_fn 名师归纳总结 - - - - - - -第 27 页,共 48 页精选学习资料 - - - - - - -
33、 - - classifier.evaluateeval_input_fn 一些其他技术以及生态ML Toolkit TensorFlow 可能刚开头被人知晓,就是由于大家都觉得他是一个深度学习的框架,其实不是,现在 TensorFlow 上仍有很多机器学习的算法集成:而且算法 API 的开发都是仿照 scikit-learn 的风格,有 Python 下做机器学习的小伙伴,可名师归纳总结 - - - - - - -第 28 页,共 48 页精选学习资料 - - - - - - - - - 以很快的适应;这里值得提出的,好玩TensorFlow 对机器学习和深度学习模型的支持,小伙伴们可以特殊
34、简洁地结合传统的机器学习方法和深度学习模型来一起训练:分布式 TensorFlow TensorFlow在分布式性能上,前面也提到了,在1.0 版本上有了很大的提升可以做到64块 GPU 上达到 58 倍的加速,这里先基本介绍下数据并行和模型并行:名师归纳总结 - - - - - - -第 29 页,共 48 页精选学习资料 - - - - - - - - - 怎么在 TensorFlow 写分布式代码,这里我就不说了,很简洁地配置,这里我讲下,可能大部分像我这样的小伙伴之前不太明白的一些彩蛋 在 TensorFlow 中做分布式训练的一些技巧,有过分布式 train 的体会应当会很感谢这些黑
35、科技: Round-Robin variables Load balancing and partitioning 名师归纳总结 上面说的是啥呢?Params Server在储存模型的参数时,默认是每一个ps 存一个variable ,然后下一个到下个ps 上存,但是就会存在很多问题,可能这个variable 很小,第 30 页,共 48 页- - - - - - -精选学习资料 - - - - - - - - - 但是另一个很大,这样你会发觉 下面几张图ps 和 work 之间的带宽的占用差距很多,怎么解决呢?看名师归纳总结 - - - - - - -第 31 页,共 48 页精选学习资料
36、- - - - - - - - - 说点题外话, 为啥我在看到这里的时候特殊兴奋呢,笔者之前在开展团队内部的分布式训练名师归纳总结 - - - - - - -平台时就遇到这个问题, 我们在测试 AlexNet模型时,发觉多个 ps 上的带宽占用差别极大,缘由在与 AlexNet模型的三个全连接参数太多,造成了ps 的不均衡;上面说了下 Distributed TensorFlow我特殊兴奋的东西,之后talk 的就是比较简洁的了,假如在 TensorFlow做分布式的 job ,文档里面都有,很简洁,这里不提了不对,这里仍必需说下 TensorFlow对于容灾的一个支持:下图是几种分布式下机器
37、挂掉的情形:第 32 页,共 48 页精选学习资料 - - - - - - - - - 多麻烦是吧, 但是没有关系, 在 TensorFlow下能够自动对这些进行一个快速的复原,只需要更换一行代码名师归纳总结 - - - - - - -第 33 页,共 48 页精选学习资料 - - - - - - - - - 将模型布入生产环境如何把训练好的模型快速部署在生产环境供应可用的服务,TensorFlow Serving就是专心在这块,我这里简洁介绍下吧:把训练好的模型供应生产环境可用的服务,通常有以下几个需求:. 长期稳固服务,低时延.支持多个模型服务TensorFlow基于 gRPC,支持.支持
38、同一模型多版本.保证运算时耗尽量小以保证一些实时性需求.mini-batching的支持,以提高效率TensorFlow Serving的设计就是为明白决这些需求,而且多种语言;名师归纳总结 - - - - - - -第 34 页,共 48 页精选学习资料 - - - - - - - - - TensorFlow 生态这部分讲了假如利用TensorFlow生态结合一些流程的框架比如Spark 、Hadoop等等来更好地使用 TensorFlow ;数据预备工作支持的数据读取方法,从快到慢依次是:1.tf.Example, tf.SequenceExample对象; 2.原生的读取 CSV,JS
39、ON 的 OP 3. 直接从 Python feed 数据如何在其他如 Hadoop, Spark 上支持 TFRecordsBeam 原生支持 见 tensorflow ecosystem集群的治理名师归纳总结 TensorFlow支持以下多种框架 : 第 35 页,共 48 页- - - - - - -精选学习资料 - - - - - - - - - 移动端以及嵌入式应用Mobile and Embedded TensorFlow 这里介绍了怎么在移动设备比如安卓、IOS 设备、树莓派上面怎么使用TensorFlow来做一些开发,具体的可能对移动设备程序开发的小伙伴们比较有用,我这里也不描
40、述了,给个talk 的 地址,有爱好的可以去看看吧;Hands On TensorBoard 这个 talk 主要是介绍了 TensorBoard 描述之后受益匪浅;# Define a simple convolutional layer 的一些应用,很多用法以前都没有尝试过,听演讲者def conv_layerinput, channels_in, channels_out: w = tf.Variabletf.zeros5, 5, channels_in, channels_out b = tf.Variabletf.zeroschannels_out 名师归纳总结 - - - - -
41、- -第 36 页,共 48 页精选学习资料 - - - - - - - - - conv = tf.nn.conv2dinput, w, strides=1, 1, 1, 1, padding=SAME act = tf.nn.reluconv + b return act # And a fully connected layer def fc_layerinput, channels_in, channels_out: w = tf.Variabletf.zeroschannels_in, channels_out b = tf.Variabletf.zeroschannels_out act = tf.nn.relutf.matmulinput, w + b return act # Setup placeholders, and reshape the data x = tf.placeholdertf.float32, shape=None, 784 y = tf.placeholdertf.float32, shape=None, 10 x_image = tf.reshapex, -1, 28, 28, 1 # Create the network conv1 = con
限制150内