面对种类繁多的 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. 其他实用学习资源
01 熟悉 TensorFlow 文档,从整体组织开始
TensorFlow 官网有多种语言的文档,大家可以在右上角自由选择语言。中文文档一直在持续更新,我们也欢迎志愿者参与翻译,改善中文文档的质量。
参与方式:关注 TensorFlow 微信公众号 (TensorFlow_official) 后回复“翻译组”,按指引操作。
因为本文主要是针对初学者,所以集中关注在 TF Core,也就是与模型训练直接相关的文档。TF Core 的文档主要分为三类:
1. Tutorial(教程)
完整的 notebook 示例教程,可以下载或直接在colab里运行;
2. Guide(指南)
关于某个特定话题的深入文档,当你需要定制某些功能和组件的时候,建议把相关主题的 guide 先读懂;
关于具体某个 API 的使用参考文档,适用于具体使用 API 碰到问题的时候参考。
三类文档又会相互引用,比如 guide 和 API reference 经常会链接到某个 tutorial ,作为示例。
除了 TF Core 以外,还有几个重要的组件,大家可以去参考相关详细的文档:
02 TensorFlow 文档使用四部曲
如果你是新手,建议先看 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 里面的如下部分:
- Sequential API
- Keras functional API
- RNN with Keras
- Masking and padding with Keras
- Write custom layers and models
最右边的子类化 (subclassing) ,需要用到 TensorFlow 底层的 tensor / variable 等概念,可以参考TensorFlow basics 指南:
模型搭建完之后就需要训练,这部分对应的文档如下:
- Train and evaluate
- Save and load Keras models
- Transfer learning
- Customizing what happens in fit:
- Write custom callback
- Writing a training loop from scratch
最右边的自定义循环训练 (custom training loop) 需要懂求导/梯度等概念,可以参考 Automatic differentiation 指南。
03 遇到难题,如何解决?
这里简单提一下,对于一些中高级用户,碰到的可能都是非常具体的细节问题,不少情况下文档里不会直接谈到。碰到这种情况,建议:
- 仔细查找文档
尤其是相关主题的 guide 和 API reference 都仔细读懂。
- 参考 tutorial
CV 类的问题看 CV tutorial,NLP 类的问题看 NLP tutorial。
- 参考 TensorFlow Model Garden 里的实现
- 使用搜索引擎
绝大部分问题前人都碰到过,所以有效使用搜索引擎能很快给你指引方向。
- 升级/降级 TensorFlow 版本
某些 bug 只会在特定版本出现,换一个版本或许已经被修复。
- 查看 TensorFlow 源代码
这个是比较消耗时间的途径,不过如果你愿意持续投入时间的话,长期来看是最好的学习方法。
04 难题未能解决,如何求助?
如果仔细搜索过相关信息还是未能解决的话,TensorFlow 社区有多个求助渠道或许可以帮你解决问题(多数邮件组会有相关 TensorFlow 工程师直接回复):
- 如果是不会使用某个功能或者API,可以去 stackoverflow 发问。
- 如果怀疑碰到了 bug,可以先在 GitHub 上搜索有没有人碰到过类似的问题,如果没有的话可以提交一个 issue。
- TensorFlow 开发论坛
- 更多的邮件组和帮助渠道
05 其他实用学习资源
除了文档和邮件组以外,这里再介绍一下另外 2 个资源:
- 机器学习领域需要同时掌握理论和编程工具,TensorFlow 作为编程工具,但是如果你要增强理论学习的话,官网上汇总了书、博客、视频、网课的各种资料。个人最推荐《Hands-On Machine Learning with Scikit-Learn, Keras, and TensorFlow》这本书和 Stanford CS231n 课程。
- TensorFlow 的每个新版本都会发布 release note,例如 2.3 release notes。里面会介绍引入了哪些新功能,改动了哪些 API 和修复了哪些 bug ,对于一些碰到 bug 或者急切等待某个新功能的用户,查看 release notes 会很有帮助。
如果你对本文中提到的文档信息存在疑问,欢迎移步“问答”版块发帖提问。你的问题有机会得到 CSDN 百大热门技术博主、资深社区作者或者 TensorFlow 资深开发者的解答哦!同时,我们也欢迎你积极地在这个版块里,回答其他小伙伴提出的问题,成为 CSDN 社区贡献者,迈出出道第一步!马上开始讨论吧!
想了解更多入门教程和产品信息?扫码关注TensorFlow官方微信公众号(TensorFlow_official),产品更新、课程教学、技术实践、应用实例等精彩内容一网打尽!
转载:https://blog.csdn.net/tensorflowforum/article/details/111160770