tensorflow基础知识(二) Graph计算图的创建和使用

tensorflow中Graph图

tensorflow的编程思想说到,在tensorflow程序中应包含两个部分:一个是构建计算图的部分,另一个是把建好的计算图放在一个Sesstion会话中的执行部分。 这篇主要讲使用tf.Graph()函数创建一个新的计算图的方法

1. 只创建一个Graph图

在Tensorflow中,始终存在一个默认的Graph,当你创建Operation、Tensor时,tensorflow会将你这些节点和边自动添加到这个默认Graph中
那么,当你只想创建一个图时,并不需要使用tf.Graph()函数创建一个新图,而是直接定义需要的Tensor和Operation,这样,tensorflow会将这些节点和边自动添加到默认Graph中

import tensorflow as tf

###-----图的构建阶段---------###
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
#----------tensorflow会将上面定义的节点和边自动添加到默认Graph中------#

###------图的执行阶段-------###
with tf.Session() as sess:    
    sess.run(init_op)      # 执行init_op操作,此时tf.matmul并没有run  
    print(sess.run(y))     # 在会话中执行tf.matmul操作, 打印y_tensor,
2. 定义多个Graph图

在tensorflow中,可以使用tf.Graph()函数创建图。如果我们需要定义多个Graph,则可以在with语句中调用tf.Graph.as_default()方法将某个graph设置成默认Graph,这样with语句块中调用的Operation或Tensor将会添加到该Graph中。

with语句是保证操作的资源可以正确的打开和释放,而且不同的计算图上的张量和运算彼此分离,互不干扰.

import tensorflow as tf
graph1 = tf.Graph()
with graph1.as_default():#创建图1
    c1 = tf.constant([9.0])

with tf.Graph().as_default() as graph2:  #创建图2
    c2 = tf.constant([1.0])

with tf.Session(graph=graph1) as sess1:#使用sess1 运行graph1
    print (sess1.run(c1))
with tf.Session(graph=graph2) as sess2:#使用sess2 运行graph2
    print (sess2.run(c2))

注:

定义多个图时,可以通过设置tf.Sesstion(graph=) 中的参数,选择当前的Session执行哪个计算图

3 指定Graph计算图运行的设备

TensorFlow中计算图可以通过tf.Graph.device函数来指定运行计算图的设备。下面程序将加法计算放在CPU上执行,也可以使用tf.device达到同样的效果。

g = tf.Graph()
with g.device('/cpu:0'):
    result = 1 + 2
  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值