前言

2018年3月30日,Google在加州山景城举行了第二届TensorFlow Dev Summit开发者峰会,并宣布正式发布TensorFlow 1.8版本。笔者有幸获得Google的资助亲临峰会现场,见证了这一具有里程碑式意义的新版本发布。众多新功能的加入和支持展示了TensorFlow的雄心壮志,同时早在2017年秋就开始测试的Eager Execution(动态图机制)在这一版本中终于正式加入,并成为了入门TensorFlow的官方推荐模式。

The easiest way to get started with TensorFlow is using Eager Execution.

—— https://www.tensorflow.org/get_started/

在此之前,TensorFlow所基于的传统Graph Execution的弊端,如入门门槛高、调试困难、灵活性差、无法使用Python原生控制语句等早已被开发者诟病许久。一些新的基于动态图机制的深度学习框架(如PyTorch)也横空出世,并以其易用性和快速开发的特性而占据了一席之地。尤其是在学术研究等需要快速迭代模型的领域,PyTorch等新兴深度学习框架已经成为主流。笔者所在的数十人的机器学习实验室中,竟只有笔者一人“守旧”地使用TensorFlow。然而,直到目前,市面上相关的TensorFlow相关的中文技术书籍及资料仍然基于传统的Graph Execution模式,让不少初学者(尤其是刚学过机器学习课程的大学生)望而却步。由此,在TensorFlow正式支持Eager Execution之际,有必要出现一本全新的技术手册,帮助初学者及需要快速迭代模型的研究者,以一个全新的角度快速入门TensorFlow。

同时,本手册还有第二个任务。市面上与TensorFlow相关的中文技术书籍大部分都以深度学习为主线,而将TensorFlow作为这些深度学习模型的实现方式。这样固然有体系完整的优点,然而对于已经对机器学习或深度学习理论有所了解,希望侧重于学习TensorFlow本身的读者而言,就显得不够友好。于是,笔者希望编写一本手册,以尽量精简的篇幅展示TensorFlow作为一个计算框架的主要特性,并弥补官方手册的不足,力图能让已经有一定机器学习/深度学习知识及编程能力的读者迅速上手TensorFlow,并在实际编程过程中可以随时查阅并解决实际问题。

本手册的主要特征有:

  • 主要基于TensorFlow最新的Eager Execution(动态图)模式,以便于模型的快速迭代开发。但依然会包含传统的Graph Execution模式,代码上尽可能兼容两者;

  • 定位以技术手册为主,编排以TensorFlow的各项概念和功能为核心,力求能够让TensorFlow开发者快速查阅。各章相对独立,不一定需要按顺序阅读;

  • 代码实现均进行仔细推敲,力图简洁高效和表意清晰。模型实现均统一使用 TensorFlow官方文档 最新提出的继承 tf.keras.Modeltf.keras.layers.Layer 的方式,保证代码的高度可复用性。每个完整项目的代码总行数均不过百行,让读者可以快速理解并举一反三;

  • 注重详略,少即是多,不追求巨细靡遗和面面俱到,不在正文中进行大篇幅的细节论述。