阅读 110

[译]写给初学者的Tensorflow介绍[2]

去年我翻译了一篇文章:写给初学者的Tensorflow介绍,但这只是文章的第一部分,由于原作者迟迟没有写第二部分,我后来就把这件事情忘了。前几天,有朋友留言问为什么没有第二部分的内容,还有朋友热心的给出了第二部分的原文链接。所以在此把第二部分的内容也翻译出来,原文地址:medium.com/buzy-develo… 。点击阅读原文可以跳转到该文章,需要翻墙哦!

在上一部分中,我写了一些非常重要的关于使用Tensorflow构建机器学习模型的核心理论概念。

Tensorflow的核心组件是张量和计算图(或数据流图)。Tensorflow只是一个将运算表示为计算图的框架。然后Tensorflow将图划分为许多彼此独立的子图,这些子图并行执行,当然这是TensorFlow的主要特性之一,它为其可扩展性做出了很大贡献。Tensorflow还具有另一个重要特性,它提供了各种现成的计算工具,可用于解决各种问题。这些计算工具也是计算图,一旦将它们添加到程序中,它们就被视为子图,因为它们将成为您要构建的计算图的一部分。

使用Tensorflow执行程序时会发生什么?

上图展现了TensorFlow最简单的架构。顶层代表编程语言接口,Tensorflow主要支持C++和Python(当然还有许多语言绑定可用,但不如C++和python高效)。

语言绑定:语言绑定提供了使用您熟悉的语言构建图形的接口,请注意,这只是一个帮助您构建图形的层。

复合图:了解复合图的含义非常重要,复合图是多个子图的组合,在第一层构建的图总是复合图,因为它是许多现成的子图或Tensorflow提供的操作的组合。例如,如果要为如下表达式构建计算图:

e = a * b + c +(a / b)
复制代码

那么e是复合图,因为它是2个子图a * b和(a / b)的组合(在Tensorflow术语中,表达式就是计算图)。

核心Tensorflow执行系统:

一旦构建并编译Tensorflow程序,语言绑定将调用包含核心执行系统的Tensorflow库。通过绑定发送到核心执行系统的数据采用容器的形式。此容器在Tensorflow中也称为Session。因此,您必须创建一个会话对象,其中包含所有操作和张量。核心执行引擎的任务很简单:

  • 获取会话对象并为其构建计算图。
  • 辨别子图及其输入。
  • 确定子图是预先构建的Tensorflow操作还是用户操作。
  • 生成主进程和工作进程,初始化分布式环境。
  • 封装子图并将它们发送到单个工作进程。主进程监控所有工作进程。
  • 与Tensorflow内核交互以执行数学运算。

Tensorflow操作:Tensorflow操作是一组预置的数学运算,使用C和C++构建。它们本质上是子图,可以在我们的程序中使用。Tensorflow操作支持的操作非常广泛,有许多不同复杂程度的操作,包括简单的加法、乘法等,以及神经网络激活函数、梯度下降、损失操作等。这个庞大的集合使得Tensorflow不仅是一个分布式执行引擎,而且还是一个用于构建科学应用的数学引擎。(Tensorflow也使用了Numpy)。

内核:Tensorflow的核心定义如下:“Tensorflow是一个用于异构平台上的机器学习和数学计算的库。”这里的异构平台意味着各种各样的设备具有不同的配置和不同的功能,具有不同的内存限制。Tensorflow可以运行在任何平台,因为它有一个复杂的内核。这些内核是为每个平台构建的,可供上层用来与异构硬件设备进行交互。内核可以利用XLA、AVX等CPU的某些特性来加速数学运算。

相关文章

  1. 写给初学者的Tensorflow介绍

image