tensorflow编程思想

转自:https://blog.csdn.net/promisejia/article/details/80790303

1 理解tensorflow编程的思想

tensorflow的编程要按照一定规则来进行。

在tensorflow程序中应包含两个部分:一个是构建计算图的部分,另一个是把建好的计算图放在一个Sesstion会话中的执行部分

  • 构建计算图:这是定义变量、初始化数据及建立运算关系的一个过程。tensorflow把这样一个过程称为构建计算图。计算图(Graph)由节点(operation)和边(Tensor、Variable)组成。其中节点是各种operation操作,比如程序中的矩阵乘法tf.matmul运算数据或变量,在tensorflow中称为tensor。举个例子:比如我们要编写tf程序实现y=w*x,那么我首先要构建一个图,这个图只包括一个节点,就是矩阵乘法操作,然后输入有两个边分别是x和w,如下面的图所示。

  • 把计算图放到一个Sesstion中执行:构建好图(Graph)之后,要先将这个graph添加到一个在会话tf.session里面,并使用tf.Session().run()方法运行计算图.

首先给一个hello world的tensorflow程序:实现矩阵乘法 y = W*x,其中 
w = [[3.0,2.5],[1.0,2.7]]; 
x = [1.0,1.0] 
程序如下:

import tensorflow as tf

###-----必须先构建计算图(y=w*x)---------###
graph1 = tf.Graph()                        #定义图graph1
with graph1.as_default():                  #指定图 graph1为默认图
    w = tf.Variable([[3.0,2.5],[1.0,2.7]]) #图中边Variabel的定义
    x = tf.constant(1.0,shape=[1,2])       #图中边x_tensor的生成

    y = tf.matmul(w,tf.transpose(x))       #节点:变量的乘法和转置操作(operation)

    init_op = tf.global_variables_initializer()   #节点: Variable的initialize_operation

###------建好的计算图放在一个Sesstion中执行-------###
with tf.Session(graph=graph1) as sess:    # 打开Session,把graph1添加到默认会话sess中
    sess.run(init_op)                     # 执行init_op操作,此时tf.matmul并没有run  
    print(sess.run(y))                    # 在会话中执行tf.matmul操作, 打印y_tensor,
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

整个程序的过程可由下图说明: 

注:

  • tensor:可以理解为一个多维数组,是tensor中的数据形式,类似于numpy 中的 narray,例如下图我们输入数据集X,以及输出y。
  • Operation::比如矩阵乘法操作
  • 必须注意的是,构建好的图,必须在会话Session中使用run()方法,才能实现tensor运算。

2 总结

  1. Tensorflow程序是以计算图Graph为基础的计算单元,并且计算图需要在一个指定的会话Sesstion中执行。
  2. 一个计算图(Graph)由操作(operation)构成的节点以及tensor数据流/variable变量数据构成的边组成。换句话说,图中的节点(圆圈)就是一些操作(Operation),比如加、减、乘、除等等。而节点之间的边就是张量流(Tensor-flow)或变量Variable

  3. 计算图必须被放进一个会话Sesstion里面,并使用Sesstion的run方法执行计算图的某个operation,这个operation才会被执行。而其他没有被run的operation,仍然不会被执行。

猜你喜欢

转载自blog.csdn.net/qq_32445015/article/details/80797530