2019-03-14

关于tensorflow中的reuse=True ,or,False

在tf.variable_scope()函数中,设置reuse=False时,在其命名空间"foo"中执行函数get_variable()时,表示创建变量"v",若在该命名空间中已经有了变量"v",则在创建时会报错

设置reuse=True时,函数get_variable()表示获取变量如下列

import tensorflow as tf

with tf.variable_scope("foo"):

    v=tf.get_variable("v",[1],initializer=tf.constant_initializer(1.0))


with tf.variable_scope("foo",reuse=True):

    v1=tf.get_variable("v",[1])

print(v1==v)

结果为:

True

在tf.variable_scope()函数中,设置reuse=True时,在其命名空间"foo"中执行函数get_variable()时,表示获取变量"v"。若在该命名空间中还没有该变量,则在获取时会报错,如下面的例子

import tensorflow as tf

with tf.variable_scope("foo",reuse=True):

    v1=tf.get_variable("v",[1])


ValueError                                Traceback (most recent call last)

<ipython-input-1-019a05c4b9a4> in <module>()

      2

      3 with tf.variable_scope("foo",reuse=True):

----> 4    v1=tf.get_variable("v",[1])

      5

ValueError: Variable foo/v does not exist, or was not created with tf.get_variable().

Did you mean to set reuse=tf.AUTO_REUSE in VarScope?

TensorFlow通过tf. get_variable()和tf.variable_scope()两个函数,可以创建多个并列的或嵌套的命名空间,用于存储神经网络中的各层的权重、偏置、学习率、滑动平均衰减率、正则化系数等参数值,神经网络不同层的参数可放置在不同的命名空间中。同时,变量重用检错和读取不存在变量检错两种机制保证了数据存放的安全性。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 标题:six_questions_of_tf 内容: 一. tf variable_scope与tf.name_s...
    一一的试验田阅读 3,222评论 0 0
  • 这篇文章是针对有tensorflow基础但是记不住复杂变量函数的读者,文章列举了从输入变量到前向传播,反向优化,数...
    horsetif阅读 4,886评论 0 1
  • 一、概要 tf.name_scope() #主要是方便参数变量的“ 分组 ”和 “ 管理 ”,主要是结合tf....
    程序_小白阅读 4,695评论 0 0
  • 1. tf.Variable与tf.get_variable tensorflow提供了通过变量名称来创建或者获取...
    鲁大帅阅读 2,271评论 0 0
  • 敬爱的老师 智慧的班主任 亲爱的学兄们大家好,我是来自鑫山力机械的侯维山今天8.31我日精进第四天 ,还剩下122...
    鑫山力智造阅读 1,150评论 0 0