当前位置:   article > 正文

【TensorFlow】tf.reset_default_graph()函数

tf.reset_default_graph()

如下是官网对tf.reset_default_graph()函数描述的翻译:

tf.reset_default_graph函数用于清除默认图形堆栈并重置全局默认图形。 

注意:默认图形是当前线程的一个属性。该tf.reset_default_graph函数只适用于当前线程。当一个tf.Session或者tf.InteractiveSession激活时调用这个函数会导致未定义的行为。调用此函数后使用任何以前创建的tf.Operation或tf.Tensor对象将导致未定义的行为。

上面这句话是什么意思?下面写一段简单的demo进行说明。

demo1,无tf.reset_default_graph()函数:

  1. import tensorflow as tf
  2. '''
  3. Signature: tf.name_scope(*args, **kwds)
  4. Docstring:
  5. Returns a context manager for use when defining a Python op.
  6. '''
  7. # 也就是说,它的主要目的是为了更加方便地管理参数命名。
  8. # 与 tf.Variable() 结合使用。简化了命名
  9. # 注意,这里的 with 和 python 中其他的 with 是不一样的
  10. # 执行完 with 里边的语句之后,这个 conv1/ 和 conv2/ 空间还是在内存中的。这时候如果再次执行此代码,就会再生成其他命名空间
  11. with tf.name_scope('conv1') as scope:
  12. weights1 = tf.Variable([1.0, 2.0], name='weights')
  13. bias1 = tf.Variable([0.3], name='bias')
  14. # 下面是在另外一个命名空间来定义变量的
  15. with tf.name_scope('conv2') as scope:
  16. weights2 = tf.Variable([4.0, 2.0], name='weights')
  17. bias2 = tf.Variable([0.33], name='bias')
  18. # 所以,实际上weights1 和 weights2 这两个引用名指向了不同的空间,不会冲突
  19. print(weights1.name)
  20. print(weights2.name)
  21. print(bias1.name)
  22. print(bias2.name)

执行结果:

从上述结果可以看出,每次运行jupyter notebook时都会在上一次执行的基础生成新的张量。

即:每在jupyter notebook上运行一次上述程序,就会在图上新增一个节点。

demo2,有tf.reset_default_graph()函数:

  1. import tensorflow as tf
  2. # 利用这个可清空default graph以及nodes
  3. tf.reset_default_graph()
  4. '''
  5. Signature: tf.name_scope(*args, **kwds)
  6. Docstring:
  7. Returns a context manager for use when defining a Python op.
  8. '''
  9. # 也就是说,它的主要目的是为了更加方便地管理参数命名。
  10. # 与 tf.Variable() 结合使用。简化了命名
  11. # 注意,这里的 with 和 python 中其他的 with 是不一样的
  12. # 执行完 with 里边的语句之后,这个 conv1/ 和 conv2/ 空间还是在内存中的。这时候如果再次执行此代码,就会再生成其他命名空间
  13. with tf.name_scope('conv1') as scope:
  14. weights1 = tf.Variable([1.0, 2.0], name='weights')
  15. bias1 = tf.Variable([0.3], name='bias')
  16. # 下面是在另外一个命名空间来定义变量的
  17. with tf.name_scope('conv2') as scope:
  18. weights2 = tf.Variable([4.0, 2.0], name='weights')
  19. bias2 = tf.Variable([0.33], name='bias')
  20. # 所以,实际上weights1 和 weights2 这两个引用名指向了不同的空间,不会冲突
  21. print(weights1.name)
  22. print(weights2.name)
  23. print(bias1.name)
  24. print(bias2.name)

执行结果:

  1. # 第一次执行结果
  2. conv1/weights:0
  3. conv2/weights:0
  4. conv1/bias:0
  5. conv2/bias:0
  6. # 第二次执行结果
  7. conv1/weights:0
  8. conv2/weights:0
  9. conv1/bias:0
  10. conv2/bias:0
  11. # 第三次执行结果
  12. conv1/weights:0
  13. conv2/weights:0
  14. conv1/bias:0
  15. conv2/bias:0

无论执行多少次生成的张量始终不变。换句话说就是:tf.reset_default_graph函数用于清除默认图形堆栈并重置全局默认图形。

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

闽ICP备14008679号