面对种类繁多的 TensorFlow 文档,入门新手该从何学起呢?具有丰富 TensorFlow 经验的资深专家、TensorFlow 技术推广工程师魏巍为大家编写了一个简单实用的文档教程和指引,帮助初学者们更有效地学习和使用 TensorFlow 2。一起来看看吧!
TensorFlow 2015 年开源以来,已经发展成为一个庞大的生态系统。TensorFlow 团队一直致力于添加新的功能和 API,同时文档也不断增加和演进。在 2019 年我们也从 1.x 升级到了 2.x,这是巨大的飞跃和变革,让我们大大改进了 TensorFlow 的易用性,降低了 TensorFlow 的学习和使用门槛,同时文档上也有了大量更新和增强。
以下全文内容丰富,大家可以通过目录了解:
1. 熟悉 TensorFlow 文档,从整体组织开始
2. TensorFlow 文档使用四部曲
- Tutorial 教程
- Guide 指南
- API reference
- Keras API 的学习
3. 遇到难题,如何解决?
4. 难题未能解决,如何求助?
5. 其他实用学习资源
TensorFlow 官网有多种语言的文档,大家可以在右上角自由选择语言。中文文档一直在持续更新,我们也欢迎志愿者参与翻译,改善中文文档的质量。
参与方式:关注 TensorFlow 微信公众号 (TensorFlow_official) 后回复“翻译组”,按指引操作。
因为本文主要是针对初学者,所以集中关注在 TF Core,也就是与模型训练直接相关的文档。TF Core 的文档主要分为三类:
1. Tutorial(教程)
完整的 notebook 示例教程,可以下载或直接在colab里运行;
2. Guide(指南)
关于某个特定话题的深入文档,当你需要定制某些功能和组件的时候,建议把相关主题的 guide 先读懂;
3. API reference(API参考)
关于具体某个 API 的使用参考文档,适用于具体使用 API 碰到问题的时候参考。
三类文档又会相互引用,比如 guide 和 API reference 经常会链接到某个 tutorial ,作为示例。
除了 TF Core 以外,还有几个重要的组件,大家可以去参考相关详细的文档:
如果你是新手,建议先看 Tutorial 里 For beginners 的部分,建立起直观感受,大概了解使用 TensorFlow 的基本思路以及 Keras 的基本用法,同时也对机器学习/深度学习的理论有一定了解。掌握基本知识后可以去学习 Keras guide(下一节),了解 Keras 更高级的使用方法和更复杂的神经网络。
之后可以开始学习 Tutorial 里面 For experts 的部分,这部分涉及定制模型,分布式训练,常见的机器学习任务(CV / NLP 等等)等。遇到不懂的部分,这时候参考 guide 和 API reference就很重要。
Guide 部分是关于常见主题的深入讨论,个人认为它是开始阶段的核心学习部分。目前 guide 分为几个核心模块,大家可以按进阶顺序“享用”:
1. 初级
Keras: 教你怎么使用 Keras API,是 TensorFlow 2 的核心,建议看完初级教程后集中研究这部分;
Data input pipelines: 教你如何高效的使用数据输入管道,建议学习完 Keras API 后学习该部分;
Save a model: 如何导出模型和训练 checkpoint,这部分虽然简短但很重要,可配合打好基础;
2. 进阶
Accelerators: 如何使用 GPU/TPU 和分布式训练,建议当要训练大模型的时候开始学习这部分;
Performance: 性能调优,建议当你的模型训练很慢的时候,深入学习这一部分;
3. 高级
TensorFlow basics: TensorFlow 底层核心的概念,这部分涉及比较底层的概念,建议留在有一定经验以后再学习;
Customization: 自定义算子,这是高级话题,建议留在有一定经验以后再学习;
Estimator: estimator 的使用。Keras 目前是推荐的高层API,建议这部分可先跳过;
TensorFlow 2: 这部分是帮助 TensorFlow 1 用户迁移到 TensorFlow 2 的。如果你未使用过 TensorFlow 1,这部分可以忽略。同时这里也强烈建议大家升级到 TensorFlow 2.x,获得更优的体验。
当碰到具体的 API 不会使用时,参考这部分文档可以帮到你。API reference 会按照不同版本组织,大家需要注意选中自己使用的版本。TensorFlow API 数量庞大,这里就不具体展开讲,相信只要使用好官网的搜索功能,找到对应的 API 是比较容易的,同时也会提供对应的 tutorial 链接和简短的使用范例。比如 tf.lookup.StaticHashTable 函数:
有时候 API reference 部分写得不够详细,或者你需要使用文档里也没有谈及的更高级的功能,这时候可能就需要去直接看源代码了。
正如前面提到的,Keras 是 TensorFlow 2 的核心 API,也是推荐大家使用的高阶 API。在这里不具体展开讲解如何使用 Keras,但从文档的角度,我们可以看看如何学习 Keras API 。Keras 主要包括模型搭建和模型训练两部分:
如这里所示,你需要知道一系列搭建模型的 API ,也就对应了 guide 里面的如下部分:
最右边的子类化 (subclassing) ,需要用到 TensorFlow 底层的 tensor / variable 等概念,可以参考TensorFlow basics 指南:
模型搭建完之后就需要训练,这部分对应的文档如下:
最右边的自定义循环训练 (custom training loop) 需要懂求导/梯度等概念,可以参考 Automatic differentiation 指南。
这里简单提一下,对于一些中高级用户,碰到的可能都是非常具体的细节问题,不少情况下文档里不会直接谈到。碰到这种情况,建议:
尤其是相关主题的 guide 和 API reference 都仔细读懂。
CV 类的问题看 CV tutorial,NLP 类的问题看 NLP tutorial。
绝大部分问题前人都碰到过,所以有效使用搜索引擎能很快给你指引方向。
某些 bug 只会在特定版本出现,换一个版本或许已经被修复。
这个是比较消耗时间的途径,不过如果你愿意持续投入时间的话,长期来看是最好的学习方法。
如果仔细搜索过相关信息还是未能解决的话,TensorFlow 社区有多个求助渠道或许可以帮你解决问题(多数邮件组会有相关 TensorFlow 工程师直接回复):
除了文档和邮件组以外,这里再介绍一下另外 2 个资源:
如果你对本文中提到的文档信息存在疑问,欢迎移步“问答”版块发帖提问。你的问题有机会得到 CSDN 百大热门技术博主、资深社区作者或者 TensorFlow 资深开发者的解答哦!同时,我们也欢迎你积极地在这个版块里,回答其他小伙伴提出的问题,成为 CSDN 社区贡献者,迈出出道第一步!马上开始讨论吧!
想了解更多入门教程和产品信息?扫码关注TensorFlow官方微信公众号(TensorFlow_official),产品更新、课程教学、技术实践、应用实例等精彩内容一网打尽!