《机器学习实战:基于
第10章 使⽤Keras搭建⼈⼯神经⽹络
第11章 训练深度神经⽹络
第12章 使⽤TensorFlow⾃定义模型并训练
第13章 使⽤TensorFlow加载和预处理数据
java调用python模型第14章 使⽤卷积神经⽹络实现深度计算机视觉
第15章 使⽤RNN和CNN处理序列
第16章 使⽤RNN和注意⼒机制进⾏⾃然语⾔处理
第17章 使⽤⾃编码器和GAN做表征学习和⽣成式学习
第18章 强化学习
第19章 规模化训练和部署TensorFlow模型
⽬前为⽌,我们只是使⽤了TensorFlow的⾼级API —— tf.keras,它的功能很强⼤:搭建了各种神经⽹络架构,包括回归、分类⽹络、Wide & Deep ⽹络、⾃归⼀化⽹络,使⽤了各种⽅法,包括批归⼀化、dropout和学习率调度。事实上,你在实际案例中95%碰到的情况只需要tf.keras 就⾜够了(和tf.data,见第13章)。现在来深⼊学习TensorFlow的低级Python API。当你需要实现⾃定义损失函数、⾃定义标准、层、模型、初始化器、正则器、权重约束时,就需要低级API了。甚⾄有时需要全⾯控制训练过程,例如使⽤特殊变换或对约束梯度时。这⼀章就会讨论这些问题,还会学习如何使⽤TensorFlow的⾃动图⽣成特征提升⾃定义模型和训练算法。⾸先,先来快速学习下TensorFlow。
笔记:TensorFlow 2.0(beta)是2019年六⽉发布的,相⽐前代更易使⽤。本书第⼀版使⽤的是TF 1,这⼀版使⽤的是TF 2。
TensorFlow速览
TensorFlow是⼀个强⼤的数值计算库,特别适合做和微调⼤规模机器学习(但也可以⽤来做其它的重型计算)。TensorFlow是⾕歌⼤脑团队开发的,⽀持了⾕歌的许多⼤规模服务,包括⾕歌云对话、⾕歌图⽚和⾕歌搜索。TensorFlow是2015年11⽉开源的,(按⽂章引⽤、公司采⽤、GitHub星数)是⽬前最流⾏的深度学习库。⽆数的项⽬是⽤TensorFlow来做各种机器学习任务,包括图⽚分类、⾃然语⾔处理、推荐系统和时间序列预测。TensorFlow提供的功能如下:
TensorFlow的核⼼与NumPy很像,但TensorFlow⽀持GPU;
TensorFlow⽀持(多设备和服务器)分布式计算;
TensorFlow使⽤了即时JIT编译器对计算速度和内存使⽤优化。编译器的⼯作是从Python函数提取出计算图,然后对计算图优化(⽐如剪切⽆⽤的节点),最后⾼效运⾏(⽐如⾃动并⾏运⾏独⽴任务);
计算图可以导出为迁移形式,因此可以在⼀个环境中训练⼀个TensorFlow模型(⽐如使⽤Python或Linux),然后在另⼀个环境中运⾏(⽐如在安卓设备上⽤Java运⾏);
TensorFlow实现了⾃动微分,并提供了⼀些⾼效的优化器,⽐如RMSProp和NAdam,因此可以容易的最⼩化各种损失函数。
基于上⾯这些特点,TensorFlow还提供了许多其他功能:最重要的是tf.keras,还有数据加载和预处理操作(tf.data,tf.io等等),图⽚处理操作(tf.image),信号处理操作(tf.signal),等等(图12-1总结了TensorFlow的Python API)
图12-1 TensorFlow的Python API
提⽰:这⼀章会介绍TensorFlow API的多个包和函数,但来不及介绍全部,所以读者最好⾃⼰花点时间好好看看API。
TensorFlow的API⼗分丰富,且⽂档详实。
TensorFlow的低级操作都是⽤⾼效的C++实现的。许多操作有多个实现,称为核:每个核对应⼀个具体的设备型号,⽐如CPU、GPU,甚⾄TPU(张量处理单元)。GPU通过将任务分成⼩块,在多个GPU线程中并⾏运⾏,可以极⼤提⾼提⾼计算的速度。TPU更快:TPU是⾃定义的ASIC芯⽚,专门⽤来做深度学习运算的(第19章会讨论适合使⽤GPU和TPU)。
TensorFlow的架构见图12-2。⼤多数时候你的代码使⽤⾼级API就够了(特别是tf.keras和tf.data),但如果需要更⼤的灵活性,就需要使⽤低级Python API,来直接处理张量。TensorFlow也⽀持其它语⾔的API。任何情况下,甚⾄是跨设备和机器的情况下,TensorFlow的执⾏引擎都会负责⾼效运⾏。
图12-2 TensorFlow的架构
TensorFlow不仅可以运⾏在Windows、Linux和macOS上,也可以运⾏在移动设备上(使⽤TensorFlow Lite),包括iOS和安卓(见第19章)。如果不想使⽤Python API,还可以使⽤C++、Java、Go和Swift的API。甚⾄还有JavaScript的实现TensorFlow.js,它可以直接在浏览器中运⾏。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论