variable_scope() & name_scope()

tf.__version__ == '1.13.2' && cuda == '10.0'

variable_scope()

  1. 每个变量空间中利用tf.get_variable()生成的变量的name必须唯一,如果要用到已经创建的变量,则需要在tf.variable_scope()设置reuse=True,如:tf.variable_scope('scope', reuse=True)
  2. variable_scope可嵌套,当外层用到reuse=True,则内层无论是否设置reuse=False,都为True。
  3. 各个常量或变量的name会带上对应变量空间名称作为前缀。

name_scope()

  1. name_scope()内部使用get_variable()函数时,生成的变量名称不会添加变量空间名称前缀,其余的会。
  2. name_scope()没有reuse参数。
  3. tf.name_scope('space')语句重复执行几次,就会生成几个独立的命名空间(variable_scope也一样),尽管表面上看起来都是“space”,实际上tensorflow在每一次执行相同语句都会在后面加上“_序数”,加以区别。
    为了让他们在同一个名称空间,解决方法如下:
    with tf.name_scope('space') as space:
    	# with-block
    with tf.name_scope(space) :
    	# with-block
    
    该方法不适用于variable_scope

实际上,无论是variable_scope还是name_scope,只要将'space'写成'space/'的形式,即便重复运行多次语句,各个变量或常量都在同一个scope之下,不会再在空间名后自动增加’_序号’。
get_variable()严格按照指定的变量空间来创建变量(不会像tf.constant, tf.Variable一样重复运行语句生成的名称前缀会带上序数),并会检查指定空间的变量名称的唯一性,若在variable_scope中指定reuse=True,则可以获取已创建的变量。
get_variable

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值