tensorflow编程逻辑

学习tensorflow编程模型首先需要重点了解以下几个概念:

  • 张量
  • 指令
  • 会话

下面从这四个重要概念入手解析tensorflow的编程逻辑。


一.概念解释

1.图

1.1数据结构—–图

       tensorflow中的图属于数据结构中图的一种,所以在这之前简单回顾一下图的数据结构。
       图(Graph)是由顶点的有穷非空集合和顶点之间的边的集合组成,通常表示为:G(V,E)。其中G 表示一个图,V 是图 G 中顶点的集合,E是图G中边的集合。而图又分为有向图,无向图,其表示如下:


tensorflow编程逻辑_第1张图片

1.2 tensorflow 中的图

       tensorflow中的图(也称为计算图或数据流图)即为上面提到的有向图。很多 TensorFlow 程序由单个图构成,但是 TensorFlow 程序可以选择创建多个图。图的节点是指令;图的边是张量。张量流经图,在每个节点由一个指令操控。一个指令的输出张量通常会变成后续指令的输入张量。TensorFlow 会实现延迟执行模型,意味着系统仅会根据相关节点的需求在需要时计算节点。tensorflow通常使用以下指令建立一张图:

with tf.Graph().as_default():
    # your code

2.张量

       TensorFlow 的名称源自张量,张量是任意维度的数组,其组成图中的边。

3.指令

       TensorFlow 指令会创建、销毁和操控张量。典型 TensorFlow 程序中的大多数代码行都是指令,其组成图中的节点。

4.会话

       上面提到,tensorflow使用延迟执行模型,即编写的指令并不会立即执行,只能在会话(session)中执行。tensorflow中通常使用以下命令开启一个session。

with tf.Graph().as_default():
#建立图
    #your code......

    #开启会话
    with tf.Session() as sess:
    #your code

二.编程逻辑

TensorFlow 编程本质上是一个两步流程:

  1. 将张量和指令整合到一个图中。
  2. 在一个会话中评估这些常量、变量和指令。

下面以一个简单的神经网络结构图结合以上两步流程说明tensorflow的编程逻辑。下图是一个带有两个隐藏层的神经网络,张量,指令,图与神经网络模型的对应关系如图,图构建好之后便能启动会话运行节点所对应的指令。


tensorflow编程逻辑_第2张图片

三.实例

下面结合一个简单的tensorflow程序实例理解以上概念

import tensorflow as tf

with tf.Graph().as_default():       #构建图
    v1 = tf.Variable(3)
    v2 = tf.Variable(tf.random_normal([1],mean=1.0,stddev=0.35))
    v3 = tf.Variable(8)
    with tf.Session() as sess:      #建立会话
        initialization = tf.global_variables_initializer()
        #print(initialization)
        sess.run(initialization)   
        print(v1.eval())
        print(sess.run(v2))

四.参考资料

  • 谷歌机器学习教程 (访问需要科学上网)
  • tensorflow手写字识别
  • 数据结构学习笔记之图

你可能感兴趣的:(机器学习)