作者刘光聪

揭秘框架的本源:开源中文书「TensorFlow内核剖析」

这是一本剖析 TensorFlow 内核工作原理的书籍,并非讲述如何使用 TensorFlow 构建机器学习模型,也不会讲述应用 TensorFlow 的最佳实践。本书将通过剖析 TensorFlow 源代码的方式,揭示 TensorFlow 的系统架构、领域模型、工作原理、及其实现模式等相关内容,以便揭示内在的知识。

项目链接:https://github.com/horance-liu/tensorflow-internals

在项目地址中,作者提供了全部的 LaTex 源文件,也提供了对应的 PDF,读者可直接下载 PDF。本书假设读者已经了解机器学习相关基本概念与理论,了解机器学习相关的基本方法论; 同时,假设读者熟悉 Python, C++ 等程序设计语言。

本书适合于渴望深入了解 TensorFlow 内核设计,期望改善 TensorFlow 系统设计和性能优化,及其探究 TensorFlow 关键技术的设计和实现的系统架构师、AI 算法工程师、和 AI 软件工程师。

PDF下载地址:https://raw.github.com/horance-liu/tensorflow-internals/master/tensorflow-internals.pdf

阅读方式

初次阅读本书,推荐循序渐进的阅读方式;对于高级用户,可以选择感兴趣的章节阅读。首次使用 TensorFlow 时,推荐从源代码完整地构建一次 TensorFlow,以便了解系统的构建方式,及其理顺所依赖的基本组件库。

另外,推荐使用 TensorFlow 亲自实践一些具体应用,以便加深对 TensorFlow 系统行为的认识和理解,熟悉常见 API 的使用方法和工作原理。强烈推荐阅读本书的同时,阅读 TensorFlow 关键代码;关于阅读代码的最佳实践,请查阅本书附录 A 的内容。

版本说明

本书写作时,TensorFlow 稳定发布版本为 1.2。不排除本书讲解的部分 API 将来被废弃,也不保证某些系统实现在未来版本发生变化,甚至被删除。

同时,为了更直接的阐述问题的本质,书中部分代码做了局部的重构;删除了部分异常处理分支,或日志打印,甚至是某些可选参数列表。但是,这样的局部重构,不会影响读者理解系统的主要行为特征,更有利于读者掌握系统的工作原理。

同时,为了简化计算图的表达,本书中的计算图并非来自 TensorBoard,而是采用简化了的,等价的图结构。同样地,简化了的图结构,也不会降低读者对真实图结构的认识和理解。

在线帮助

为了更好地与读者交流,已在 Github 上建立了勘误表,及其相关补充说明。由于个人经验与能力有限,在有限的时间内难免犯错。如果读者在阅读过程中,如果发现相关错误,请帮忙提交 Pull Request,避免他人掉入相同的陷阱之中,让知识分享变得更加通畅,更加轻松,我将不甚感激。

目录

工程TensorFlow
3
相关数据
机器学习技术

机器学习是人工智能的一个分支,是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、计算复杂性理论等多门学科。机器学习理论主要是设计和分析一些让计算机可以自动“学习”的算法。因为学习算法中涉及了大量的统计学理论,机器学习与推断统计学联系尤为密切,也被称为统计学习理论。算法设计方面,机器学习理论关注可以实现的,行之有效的学习算法。

重构技术

代码重构(英语:Code refactoring)指对软件代码做任何更动以增加可读性或者简化结构而不影响输出结果。 软件重构需要借助工具完成,重构工具能够修改代码同时修改所有引用该代码的地方。在极限编程的方法学中,重构需要单元测试来支持。

TensorBoard技术

一个信息中心,用于显示在执行一个或多个 TensorFlow 程序期间保存的摘要信息。

参数技术

在数学和统计学裡,参数(英语:parameter)是使用通用变量来建立函数和变量之间关系(当这种关系很难用方程来阐述时)的一个数量。

TensorFlow技术

TensorFlow是一个开源软件库,用于各种感知和语言理解任务的机器学习。目前被50个团队用于研究和生产许多Google商业产品,如语音识别、Gmail、Google 相册和搜索,其中许多产品曾使用过其前任软件DistBelief。

张量技术

张量是一个可用来表示在一些矢量、标量和其他张量之间的线性关系的多线性函数,这些线性关系的基本例子有内积、外积、线性映射以及笛卡儿积。其坐标在 维空间内,有 个分量的一种量,其中每个分量都是坐标的函数,而在坐标变换时,这些分量也依照某些规则作线性变换。称为该张量的秩或阶(与矩阵的秩和阶均无关系)。 在数学里,张量是一种几何实体,或者说广义上的“数量”。张量概念包括标量、矢量和线性算子。张量可以用坐标系统来表达,记作标量的数组,但它是定义为“不依赖于参照系的选择的”。张量在物理和工程学中很重要。例如在扩散张量成像中,表达器官对于水的在各个方向的微分透性的张量可以用来产生大脑的扫描图。工程上最重要的例子可能就是应力张量和应变张量了,它们都是二阶张量,对于一般线性材料他们之间的关系由一个四阶弹性张量来决定。

推荐文章
暂无评论
暂无评论~