TF.gragh()函数

本文深入解析了TensorFlow的工作原理及关键特性,包括其张量流的概念、多种实用函数介绍及图(graph)的重要作用。同时,还展示了如何通过具体实例进行操作演示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

TensorFlow是谷歌基于DistBelief进行研发的第二代人工智能学习系统,其命名来源于本身的运行原理。Tensor(张量)意味着N维数组,Flow(流)意味着基于数据流图的计算,TensorFlow为张量从流图的一端流动到另一端计算过程。TensorFlow是将复杂的数据结构传输至人工智能神经网中进行分析和处理过程的系统。

TensorFlow可被用于语音识别图像识别等多项机器深度学习领域,对2011年开发的深度学习基础架构DistBelief进行了各方面的改进,它可在小到一部智能手机、大到数千台数据中心服务器的各种设备上运行。TensorFlow将完全开源,任何人都可以用。

原生接口文章

 

  1. 【Tensorflow】tf.placeholder函数
  2. 【TensorFlow】tf.nn.conv2d是怎样实现卷积的
  3. 【TensorFlow】tf.nn.max_pool实现池化操作
  4. 【Tensorflow】tf.nn.relu函数
  5. 【Tensorflow】tf.reshape 函数
  6. 【Tensorflow】tf.nn.dropout函数
  7. 【Tensorflow】tf.argmax函数
  8. 【Tensorflow】tf.cast 类型转换 函数
  9. 【Tensorflow】tf.train.AdamOptimizer函数
  10. 【Tensorflow】tf.Graph()函数
  11. 【TensorFlow】tf.nn.softmax_cross_entropy_with_logits的用法
  12. 【Tensorflow】tf.dynamic_partition 函数 分拆数组

     原生接口实例

 

 

  1. 【Tensorflow】实现简单的卷积神经网络CNN实际代码
  2. 【Tensorflow 实战】实现欧式距离

        slim接口文章

 

 

  1. 【Tensorflow】tensorflow.contrib.slim 包
  2. 【Tensorflow slim】 slim.arg_scope的用法
  3. 【Tensorflow slim】slim.data包
  4. 【Tensorflow slim】slim evaluation 函数
  5. 【Tensorflow slim】slim layers包
  6. 【Tensorflow slim】slim learning包
  7. 【Tensorflow slim】slim losses包
  8. 【Tensorflow slim】slim nets包
  9. 【Tensorflow slim】slim variables包
  10. 【Tensorflow slim】slim metrics包

       slim 实例

 

 

  1. 【Tensorflow slim 实战】写MobileNet
  2. 【Tensorflow slim 实战】写Inception-V4 Inception-ResNet-v2结构

        kera 接口文章

 

 

  1. 【Tensorflow keras】Keras:基于Theano和TensorFlow的深度学习库
  2. 【Tensorflow keras】轻量级深度学习框架 Keras简介

        tensorflow使用过程中的辅助接口或通过tensorflow实现的批量操作接口

 

 

  1. 将非RGB图片转换为RGB图片
  2. 【opencv】python3 将图片生成视频文件
  3. 【opencv】selective_search函数

 

 

=========================================================================

 

 

tf.Graph() 函数非常重要,注意提现在两个方面

1. 它可以通过tensorboard用图形化界面展示出来流程结构

2. 它可以整合一段代码为一个整体存在于一个图中

 

声明情况大体有三种

1. tensor:通过张量本身直接出graph

 

 
  1. # -*- coding: utf-8 -*-

  2. import tensorflow as tf

  3.  
  4. c = tf.constant(4.0)

  5.  
  6. sess = tf.Session()

  7. sess.run(tf.global_variables_initializer())

  8. c_out = sess.run(c)

  9. print(c_out)

  10. print(c.graph == tf.get_default_graph())

  11. print(c.graph)

  12. print(tf.get_default_graph())

输出

 

 

 
  1. 4.0

  2. True

  3. <tensorflow.python.framework.ops.Graph object at 0x7f382f9ef110>

  4. <tensorflow.python.framework.ops.Graph object at 0x7f382f9ef110>

 

 

2.通过声明一个默认的,然后定义张量内容,在后面可以调用或保存

 

 
  1. # -*- coding: utf-8 -*-

  2. import tensorflow as tf

  3.  
  4. g = tf.Graph()

  5. with g.as_default():

  6. c = tf.constant(4.0)

  7.  
  8. sess = tf.Session(graph=g)

  9. c_out = sess.run(c)

  10. print(c_out)

  11. print(g)

  12. print(tf.get_default_graph())


输出

 

 

 
  1. 4.0

  2. <tensorflow.python.framework.ops.Graph object at 0x7f65f1cb2fd0>

  3. <tensorflow.python.framework.ops.Graph object at 0x7f65de447c90>

 

 

3.通过多个声明,在后面通过变量名来分别调用

 

 
  1. # -*- coding: utf-8 -*-

  2. import tensorflow as tf

  3.  
  4. g1 = tf.Graph()

  5. with g1.as_default():

  6. c1 = tf.constant(4.0)

  7.  
  8. g2 = tf.Graph()

  9. with g2.as_default():

  10. c2 = tf.constant(20.0)

  11.  
  12. with tf.Session(graph=g1) as sess1:

  13. print(sess1.run(c1))

  14. with tf.Session(graph=g2) as sess2:

  15. print(sess2.run(c2))


输出

 

 

 
  1. 4.0

  2. 20.0


对graph的操作大体有三种

 

1.保存

 

 
  1. # -*- coding: utf-8 -*-

  2. import tensorflow as tf

  3.  
  4. g1 = tf.Graph()

  5. with g1.as_default():

  6. # 需要加上名称,在读取pb文件的时候,是通过name和下标来取得对应的tensor的

  7. c1 = tf.constant(4.0, name='c1')

  8.  
  9. g2 = tf.Graph()

  10. with g2.as_default():

  11. c2 = tf.constant(20.0)

  12.  
  13. with tf.Session(graph=g1) as sess1:

  14. print(sess1.run(c1))

  15. with tf.Session(graph=g2) as sess2:

  16. print(sess2.run(c2))

  17.  
  18. # g1的图定义,包含pb的path, pb文件名,是否是文本默认False

  19. tf.train.write_graph(g1.as_graph_def(),'.','graph.pb',False)

 

 

输出

 

 
  1. 4.0

  2. 20.0

并且在当前文件夹下面生成graph.pb文件
 

 

2.从pb文件中调用

 

 
  1. # -*- coding: utf-8 -*-

  2. import tensorflow as tf

  3. from tensorflow.python.platform import gfile

  4.  
  5. #load graph

  6. with gfile.FastGFile("./graph.pb",'rb') as f:

  7. graph_def = tf.GraphDef()

  8. graph_def.ParseFromString(f.read())

  9. tf.import_graph_def(graph_def, name='')

  10.  
  11. sess = tf.Session()

  12. c1_tensor = sess.graph.get_tensor_by_name("c1:0")

  13. c1 = sess.run(c1_tensor)

  14. print(c1)


输出

 

 

4.0

 

 

3.穿插调用

 

 
  1. # -*- coding: utf-8 -*-

  2. import tensorflow as tf

  3.  
  4. g1 = tf.Graph()

  5. with g1.as_default():

  6. # 声明的变量有名称是一个好的习惯,方便以后使用

  7. c1 = tf.constant(4.0, name="c1")

  8.  
  9. g2 = tf.Graph()

  10. with g2.as_default():

  11. c2 = tf.constant(20.0, name="c2")

  12.  
  13. with tf.Session(graph=g2) as sess1:

  14. # 通过名称和下标来得到相应的值

  15. c1_list = tf.import_graph_def(g1.as_graph_def(), return_elements = ["c1:0"], name = '')

  16. print(sess1.run(c1_list[0]+c2))


输出

 

 

24.0
TensorFlow中的模型图是指模型的计算图,它描述了模型的输入、输出和所有的计算操作。在TensorFlow中,模型图通常是使用tf.Graph对象来实现的。一个tf.Graph包含一组tf.Operation对象和tf.Tensor对象,其中tf.Operation表示计算节点,tf.Tensor表示计算节点之间的数据流。 要创建一个模型图,首先需要创建一个空白的tf.Graph对象。然后,在该图上定义模型的输入、输出和计算操作,这些操作可以是TensorFlow预定义的操作,也可以是自定义操作。当定义完模型后,可以使用tf.Session对象执行计算图,产生模型的输出。 以下是一个简单的示例,用于创建一个包含两个输入和一个输出的计算图: ``` import tensorflow as tf # 创建一个空白的tf.Graph对象 graph = tf.Graph() # 在该图上定义模型的输入和计算操作 with graph.as_default(): # 定义两个输入节点 input1 = tf.placeholder(tf.float32, [None, 10], name='input1') input2 = tf.placeholder(tf.float32, [None, 5], name='input2') # 定义一个计算操作 fc1 = tf.layers.dense(tf.concat([input1, input2], axis=1), units=20, activation=tf.nn.relu, name='fc1') # 定义一个输出节点 output = tf.layers.dense(fc1, units=1, activation=None, name='output') # 创建一个tf.Session对象来执行计算图 with tf.Session(graph=graph) as sess: # 使用输入数据执行计算图 input1_data = [[1.0]*10]*32 input2_data = [[2.0]*5]*32 output_data = sess.run(output, feed_dict={input1: input1_data, input2: input2_data}) print(output_data) ``` 在这个示例中,我们定义了一个包含两个输入和一个输出的计算图。输入节点分别是input1和input2,它们都是形状为(None,10)和(None,5)的张量,其中None表示可以接受任意大小的批次。我们定义了一个计算操作fc1,它使用tf.layers.dense函数实现一个全连接层,将两个输入节点连接在一起,并输出一个形状为(None,20)的张量。最后,我们定义了一个输出节点output,它使用tf.layers.dense函数实现另一个全连接层,将fc1的输出映射到一个标量值。 在创建完计算图后,我们可以使用tf.Session对象来执行它。我们首先创建一个tf.Session对象,并将计算图graph传递给它。然后,我们使用sess.run函数来执行计算图,并将输入数据传递给计算图。最后,我们打印出输出节点output的值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值