《TensorfFlow实战》读书笔记(一) —— Tensorflow 基础

  • Post author:
  • Post category:其他


《TensorfFlow实战》读书笔记(一) —— Tensorflow 基础

记录

概述,要点,代码,思维导图


书籍信息

书名:《Tensorflow实战》

作者:黄文坚 唐源

出版社出版:电子工业出版社

ISBN:978-7-121-30912-0



1.1

Tensorflow 概要

TensorFlow 的官方网址:

www.tensorflow.org


Github 网址:

github.com/tensorflow/tensorflow


模型仓库地址:

github.com/tensorflow/models

Tensorflow 的一般架构:

这里写图片描述

TensorFlow 主要特性:

编程模型 Dataflow-like model (数据流模型)
语言 Python、C++、Go、Rust、Haskell、Java(还有非官方的 Julia、JavaScript、R 的支持)
部署 Code once, run everywhere(一次编写, 各处运行)
计算资源 CPU(Linux、Mac、Windows、Android、iOS) GPU(Linux、Mac、Windows) TPU(Tensor Processing Unit,张量计算单元, 主要用作推断)
实现方式 Local Implementation(单机实现) Distributed Implementation(分布式实现)
平台支持 Google Cloud Platform(谷歌云平台) Hadoop File System(Hadoop 分布式文件系统)
数学表达 Math Graph Expression(数学计算图表达) Auto Differentiation(自动微分)
优化 Common Subexpression Elimination (共同子图消除) Asynchronous Kernel Optimization(异步核优化) Communication Optimization(通信优化) Model Parallelism(模型并行)Data Parallelism(数据并行)Pipeline(流水线)


1.2

Tensorflow 编程模型简介


1.2.1 核心概念

  1. TensorFlow 的计算表示为计算图(computation graph), 其中每一种运算操作(operation)作为一个节点(node),节点与节点之间连接为边(edge)。
  2. 计算图中每个节点可以有任意个输入和输出, 每一个节点描述一种运算操作,可以算是运算操作的实例化(instance)。
  3. 计算图的边中流动(flow)的数据称为张量(tensor),tensor 的数据类型可以定义和推断得到。
  4. 有一类特殊的边中没有数据流动(依赖控制

    control dependencies

    )作用是让起始节点执行后再执行目标节点,灵活进行条件控制。

  5. python示例
import tensorflow as tf
b = tf.Variable(tf.zeros([100]))    #生成 100 维的向量,初始化为 0
W = tf.Variable(tf.random_uniform([784,100],-1,1)) #生成784X100 的随机矩阵
x = tf.placeholder(name="x")        # 输入的 Placeholder
relu = tf.nn.relu(tf.matmul(W,x)+b) #ReLU(Wx+b)
C = [...]                           # 根据 ReLU 函数的结果计算 Cost
s = tf.Session()
for step in range(0,10):
    input = ...construct 100-D input array... # 为输入创建一个 100 维的向量
    result = s.ruu(C, feed_dict={x: input})   # 获得 Cost,供给输入 x
    print(step, result)

这里写图片描述

TensorFlow 内建的运算操作:

类型 示例
标量运算 Add、Sub、Mul、Div、Exp、Log、Greater、Less、Equal
向量运算 Concat、Slice、Split、Constant、Rank、Shape、Shuffle
矩阵运算 MatMul、MatrixInverse、MatrixDeterminant
带状态的运算 Variable、Assign、AssignAdd
神经网络组件 SoftMax、Sigmoid、ReLU、Convolution2D、MaxPooling
存储、恢复 Save、Restore
队列及同步运算 Enqueue、Dequeue、MutexAcquire、MutexRelease
控制流 Merge、Switch、Enter、Leave、NextIteration


1.2.2 实现原理

TensorFlow 单机版本和分布式版本的示例图:

这里写图片描述

TensorFlow CPU 与 GPU 的通信过程:

这里写图片描述


1.23 拓展功能

1.TensorFlow 的自动求导示例:

这里写图片描述

2.TensorFlow 支持单独执行子图

3. TensorFlow 支持计算图的控制流,比如 if-condition 和 while-loop。

4. TensorFlow 提供 Switch 和 Merge 两种 operator,可以根据某个布尔值跳过某段子图, 然后把两段子图的结果合并, 实现 if-else 的功能

5. TensorFlow 的数据输入通过 input node 让用户直接输入文件系统的路径。

6. 队列可以让计算图的不同节点异步地执行。

7. 容器是 TensorFlow 中一种特殊的管理长期变量的机制,甚至可以允许不同计算图的不同Seesion 之间共享一些状态值。


1.24 性能优化

数据并行:

这里写图片描述

模型并行:

流水线并行:

这里写图片描述



版权声明:本文为dzdjt3104原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。