赞
踩
如下是官网对tf.reset_default_graph()函数描述的翻译:
tf.reset_default_graph函数用于清除默认图形堆栈并重置全局默认图形。
注意:默认图形是当前线程的一个属性。该tf.reset_default_graph函数只适用于当前线程。当一个tf.Session或者tf.InteractiveSession激活时调用这个函数会导致未定义的行为。调用此函数后使用任何以前创建的tf.Operation或tf.Tensor对象将导致未定义的行为。
上面这句话是什么意思?下面写一段简单的demo进行说明。
- import tensorflow as tf
- '''
- Signature: tf.name_scope(*args, **kwds)
- Docstring:
- Returns a context manager for use when defining a Python op.
- '''
- # 也就是说,它的主要目的是为了更加方便地管理参数命名。
- # 与 tf.Variable() 结合使用。简化了命名
- # 注意,这里的 with 和 python 中其他的 with 是不一样的
- # 执行完 with 里边的语句之后,这个 conv1/ 和 conv2/ 空间还是在内存中的。这时候如果再次执行此代码,就会再生成其他命名空间
- with tf.name_scope('conv1') as scope:
- weights1 = tf.Variable([1.0, 2.0], name='weights')
- bias1 = tf.Variable([0.3], name='bias')
-
- # 下面是在另外一个命名空间来定义变量的
- with tf.name_scope('conv2') as scope:
- weights2 = tf.Variable([4.0, 2.0], name='weights')
- bias2 = tf.Variable([0.33], name='bias')
-
- # 所以,实际上weights1 和 weights2 这两个引用名指向了不同的空间,不会冲突
- print(weights1.name)
- print(weights2.name)
- print(bias1.name)
- print(bias2.name)
执行结果:
从上述结果可以看出,每次运行jupyter notebook时都会在上一次执行的基础生成新的张量。
即:每在jupyter notebook上运行一次上述程序,就会在图上新增一个节点。
- import tensorflow as tf
- # 利用这个可清空default graph以及nodes
- tf.reset_default_graph()
- '''
- Signature: tf.name_scope(*args, **kwds)
- Docstring:
- Returns a context manager for use when defining a Python op.
- '''
- # 也就是说,它的主要目的是为了更加方便地管理参数命名。
- # 与 tf.Variable() 结合使用。简化了命名
- # 注意,这里的 with 和 python 中其他的 with 是不一样的
- # 执行完 with 里边的语句之后,这个 conv1/ 和 conv2/ 空间还是在内存中的。这时候如果再次执行此代码,就会再生成其他命名空间
- with tf.name_scope('conv1') as scope:
- weights1 = tf.Variable([1.0, 2.0], name='weights')
- bias1 = tf.Variable([0.3], name='bias')
-
- # 下面是在另外一个命名空间来定义变量的
- with tf.name_scope('conv2') as scope:
- weights2 = tf.Variable([4.0, 2.0], name='weights')
- bias2 = tf.Variable([0.33], name='bias')
-
- # 所以,实际上weights1 和 weights2 这两个引用名指向了不同的空间,不会冲突
- print(weights1.name)
- print(weights2.name)
- print(bias1.name)
- print(bias2.name)
执行结果:
- # 第一次执行结果
- conv1/weights:0
- conv2/weights:0
- conv1/bias:0
- conv2/bias:0
-
- # 第二次执行结果
- conv1/weights:0
- conv2/weights:0
- conv1/bias:0
- conv2/bias:0
-
- # 第三次执行结果
- conv1/weights:0
- conv2/weights:0
- conv1/bias:0
- conv2/bias:0
无论执行多少次生成的张量始终不变。换句话说就是:tf.reset_default_graph函数用于清除默认图形堆栈并重置全局默认图形。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。