Welcome to Tensorflow

“使用数据流程图进行数值计算的开放源码软件库”

一些使用TensorFlow的网络

WaveNet
Drawing

Goals

  1. 理解TF的计算图方法
  2. 探索TF的内置函数和类
  3. 学会如何去构建适合一个深度学习项目的模型

Resources

官方文件
官方样例模型

Books

  1. Aurélien Géron’s Hands-On Machine Learning with Scikit-Learn and TensorFlow (O’Reilly, March 2017)
  2. François Chollet’s Deep Learning with Python (Manning Publications, November 2017)
  3. Nishant Shukla’s Machine Learning with TensorFlow (Manning Publications, January 2018)
  4. Lieder et al.’s Learning TensorFlow A Guide to Building Deep Learning Systems (O’Reilly, August 2017)

Graphs and Sessions

Data Flow Graphs
  1. TF将计算的定义和执行分离
  2. 步骤
    Phase1: assemble a graph
    Phase2: use a session to execute operation in the graph
    斯坦福大学cs20——Welcome to Tensorflow!
  3. What’s a tensor(张量)?
    An n-dimensional array
    0-d tensor: scalar (number)
    1-d tensor: vector
    2-d tensor: matrix
    and so on
  4. Nodes and Edges
    斯坦福大学cs20——Welcome to Tensorflow!
    斯坦福大学cs20——Welcome to Tensorflow!
    Nodes: 运算符、变量、常量
    Edges: tensors
    斯坦福大学cs20——Welcome to Tensorflow!
    斯坦福大学cs20——Welcome to Tensorflow!
  5. How to get the value of a?
    创建一个会话,将其分配给变量sess,以便稍后调用,在会话中,计算图表以获取a的值:
    斯坦福大学cs20——Welcome to Tensorflow!
    我们一般用一下这种写法:
    斯坦福大学cs20——Welcome to Tensorflow!

tf.Session()

  1. 会话对象封装了执行操作对象和计算张量对象的环境。
  2. Session还将分配内存来存储变量的当前值。

More graph

斯坦福大学cs20——Welcome to Tensorflow!斯坦福大学cs20——Welcome to Tensorflow!

Subgraph

斯坦福大学cs20——Welcome to Tensorflow!
斯坦福大学cs20——Welcome to Tensorflow!
由于计算pow_op并不需要useless,所以session并不会计算、存储useless。
斯坦福大学cs20——Welcome to Tensorflow!
Session只会计算与fetches相关的部分。

parallel

可以将图形分割成几个块,并在多个cpu、gpu、TPUs或其他设备上并行运行它们(Example: AlexNet):
斯坦福大学cs20——Welcome to Tensorflow!

Distributed Computation

斯坦福大学cs20——Welcome to Tensorflow!

多个图?

  1. 多个图需要多个会话,默认情况下,每个图都会尝试使用所有可用资源
  2. 如果不通过python/numpy传递数据,就不能在它们之间传递数据,而python/numpy在分布式环境中不起作用
  3. 最好在一个图中有断开连接的子图
tf.Graph()

斯坦福大学cs20——Welcome to Tensorflow!
斯坦福大学cs20——Welcome to Tensorflow!
tensorflow不会混合默认graph和用户自己创建的graph
斯坦福大学cs20——Welcome to Tensorflow!
上面这种做法容易出错,这样更好:
斯坦福大学cs20——Welcome to Tensorflow!
但是真的没有必要多个图!!!

为什么选择graph

  1. 节省计算。只运行指向要获取的值的子图。
  2. 许多常见的机器学习模型,如神经网络,已经被普遍地教授并被可视化为有向图,这使得它们的实现对机器学习实践者来说更加自然。
  3. 通过将计算分解成容易微分的小块,TF能够自动计算任意节点(或“操作”,它们在TensorFlow中被称为)相对于任何可能影响第一个节点输出的其他节点的导数。能够计算节点的导数/梯度,特别是输出节点,对于建立机器学习模型是至关重要的。
  4. 将计算分开,可以更容易地在多个cpu、gpu和其他计算设备之间分配工作。简单地将整个较大的图形分割成几个较小的图形,并将图形的每个部分分配给每个设备(使用逻辑协调跨设备共享信息)

作者:其实是个驴
参考:cs20课件

相关文章: