当前位置:   article > 正文

深度学习基础之《TensorFlow框架(2)—图》

深度学习基础之《TensorFlow框架(2)—图》

一、什么是图结构

1、图包含了一组tf.Operation代表的计算单元对象和tf.Tensor代表的计算单元之间流动的数据
图结构:数据(Tensor) + 操作(Operation)

二、图相关操作

1、默认图
通常TensorFlow会默认帮我们创建一张图

查看默认图的两种方法:
(1)通过调用tf.compat.v1.get_default_graph()访问,要将操作添加到默认图形中,直接创建OP即可
(2)op、sess都含有graph属性,默认都在一张图中
注:2.x版本(使用默认图)不支持调用属性,会报错“AttributeError: Tensor.graph is meaningless when eager execution is enabled.”

  1. import os
  2. os.environ['TF_CPP_MIN_LOG_LEVEL']='2'
  3. import tensorflow as tf
  4. def tensorflow_demo():
  5. """
  6. TensorFlow的基本结构
  7. """
  8. # TensorFlow实现加减法运算
  9. a_t = tf.constant(2)
  10. b_t = tf.constant(3)
  11. c_t = a_t + b_t
  12. print("TensorFlow加法运算结果:\n", c_t)
  13. print(c_t.numpy())
  14. # 2.0版本不需要开启会话,已经没有会话模块了
  15. return None
  16. def graph_demo():
  17. """
  18. 图的演示
  19. """
  20. # TensorFlow实现加减法运算
  21. a_t = tf.constant(2)
  22. b_t = tf.constant(3)
  23. c_t = a_t + b_t
  24. print("TensorFlow加法运算结果:\n", c_t)
  25. print(c_t.numpy())
  26. # 查看默认图
  27. # 方法1:调用方法
  28. default_g = tf.compat.v1.get_default_graph()
  29. print("default_g:\n", default_g)
  30. # 方法2:查看属性
  31. # print("a_t的图属性:\n", a_t.graph)
  32. # print("c_t的图属性:\n", c_t.graph)
  33. return None
  34. if __name__ == "__main__":
  35. # 代码1:TensorFlow的基本结构
  36. # tensorflow_demo()
  37. # 代码2:图的演示
  38. graph_demo()
  1. python3 day01_deeplearning.py
  2. TensorFlow加法运算结果:
  3. tf.Tensor(5, shape=(), dtype=int32)
  4. 5
  5. default_g:
  6. <tensorflow.python.framework.ops.Graph object at 0x7f27651b5be0>

2、创建图
(1)可以通过tf.Graph()自定义创建图
(2)如果要在这张图中创建OP,典型用法是使用tf.Graph.as_default()上下文管理器

  1. import os
  2. os.environ['TF_CPP_MIN_LOG_LEVEL']='2'
  3. import tensorflow as tf
  4. def tensorflow_demo():
  5. """
  6. TensorFlow的基本结构
  7. """
  8. # TensorFlow实现加减法运算
  9. a_t = tf.constant(2)
  10. b_t = tf.constant(3)
  11. c_t = a_t + b_t
  12. print("TensorFlow加法运算结果:\n", c_t)
  13. print(c_t.numpy())
  14. # 2.0版本不需要开启会话,已经没有会话模块了
  15. return None
  16. def graph_demo():
  17. """
  18. 图的演示
  19. """
  20. # TensorFlow实现加减法运算
  21. a_t = tf.constant(2)
  22. b_t = tf.constant(3)
  23. c_t = a_t + b_t
  24. print("TensorFlow加法运算结果:\n", c_t)
  25. print(c_t.numpy())
  26. # 查看默认图
  27. # 方法1:调用方法
  28. default_g = tf.compat.v1.get_default_graph()
  29. print("default_g:\n", default_g)
  30. # 方法2:查看属性
  31. # print("a_t的图属性:\n", a_t.graph)
  32. # print("c_t的图属性:\n", c_t.graph)
  33. # 自定义图
  34. new_g = tf.Graph()
  35. # 在自己的图中定义数据和操作
  36. with new_g.as_default():
  37. a_new = tf.constant(20)
  38. b_new = tf.constant(30)
  39. c_new = a_new + b_new
  40. print("c_new:\n", c_new)
  41. print("a_new的图属性:\n", a_new.graph)
  42. print("b_new的图属性:\n", b_new.graph)
  43. # 开启new_g的会话
  44. with tf.compat.v1.Session(graph=new_g) as sess:
  45. c_new_value = sess.run(c_new)
  46. print("c_new_value:\n", c_new_value)
  47. print("我们自己创建的图为:\n", sess.graph)
  48. return None
  49. if __name__ == "__main__":
  50. # 代码1:TensorFlow的基本结构
  51. # tensorflow_demo()
  52. # 代码2:图的演示
  53. graph_demo()
  1. python3 day01_deeplearning.py
  2. TensorFlow加法运算结果:
  3. tf.Tensor(5, shape=(), dtype=int32)
  4. 5
  5. default_g:
  6. <tensorflow.python.framework.ops.Graph object at 0x7f19806c4d68>
  7. c_new:
  8. Tensor("add:0", shape=(), dtype=int32)
  9. a_new的图属性:
  10. <tensorflow.python.framework.ops.Graph object at 0x7f19809f5748>
  11. b_new的图属性:
  12. <tensorflow.python.framework.ops.Graph object at 0x7f19809f5748>
  13. c_new_value:
  14. 50
  15. 我们自己创建的图为:
  16. <tensorflow.python.framework.ops.Graph object at 0x7f19809f5748>

说明:
(1)默认图执行结果是tf.Tensor(5, shape=(), dtype=int32)
(2)自定义图执行结果是Tensor("add:0", shape=(), dtype=int32)
(3)自定义图没有即时执行,需要开启Session指定图来执行
(4)可以看到默认图地址为0x7f19806c4d68,自定义图地址为0x7f19809f5748
 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/128254?site
推荐阅读
相关标签
  

闽ICP备14008679号