1.tf.Variable与tf.get_variable

①在创建变量的时候,两者是等价的
②tf.Variable的变量名是一个可选项,而tf.get_variable必须要有变量名

import tensorflow as tf
v=tf.get_variable(name='v',shape=[1],initializer=tf.constant_initializer(1.0))
v=tf.Variable(tf.constant(1.0,shape=[1],name='v'))

2.tf.variable_scope与tf.name_scope

①tf.get_variable()不受tf.name_scope影响
②当reuse为False或None(默认)时,同一个名字的tf.variable_scope()下**使用tf.get_variable()**创建的变量名不能相同;当reuse为True时,tf.variable_scope()只能获取已经创建过的变量,而不能通过tf.Variable和tf.get_variable创建变量了

tf.reset_default_graph()  #必须要先清理掉之前的创建的变量才行哦
with tf.variable_scope('foo'):  #默认是reuse=Falsev=tf.get_variable('v',[1],initializer=tf.constant_initializer(1.0)) #一定要注意参数的输入顺序,如果不是按照默认顺序,请加上参数名v1=tf.Variable(tf.constant(value=1.0),name='v1')  #使用tf.Variable()可以在foo/下建立两个相同名字的变量,但是会默认给第二个foo定义为foo_1print(v1.name)
with tf.variable_scope('foo'):  #默认是reuse=False#v=tf.get_variable('v',[1],initializer=tf.constant_initializer(1.0))  #加上这句话就会报错,因为处在foo/下存在两个相同的'v'变量v1=tf.Variable(tf.constant(value=1.0),name='v1')print(v1.name)
with tf.variable_scope('foo',reuse=True):v3=tf.get_variable('v',[1],initializer=tf.constant_initializer(1.0))  #当reuse为True时,foo/下可以出现相同名字的变量,但是此时的tf.get_variable只是用于获取上面创建好的变量'v'print(v3.name)#输出
foo/v1:0
foo_1/v1:0
foo/v:0
tf.reset_default_graph()
with tf.name_scope('foo'):  #名字域是没有reuse的,同样,不能使用tf.get_variable()来创建名字相同的两个变量v=tf.get_variable(name='v',initializer=tf.constant(1.0))  #tf.get_variable()创建的变量不会受name_scope的影响的v1=tf.Variable(tf.constant(1.0),name='v1')print(v.name)print(v1.name)
with tf.name_scope('foo'):  #名字域是没有reuse的,所以肯定不能在同一个名字域下出现两个相同名字的变量#v=tf.get_variable(name='v',initializer=tf.constant(1.0))v1=tf.Variable(tf.constant(1.0),name='v1')print(v.name)#输出
v:0
foo/v1:0
v:0
tf.reset_default_graph()
with tf.variable_scope('foo'):v=tf.get_variable(name='v',initializer=tf.constant(1.0))
with tf.variable_scope('foo',reuse=True):v=tf.Variable(tf.constant(1.0),name='v')  #虽然在reuse=True下,但仍可以用tf.Variable()进行变量的创建工作print(v.name)v1=tf.Variable(tf.constant(1.0),name='v')  #如果再创建一个'v'则它的名字就变成了foo_1/v_1:0print(v1.name)v2=tf.get_variable(name='v1',initializer=tf.constant(1.0))#输出
foo_1/v:0
foo_1/v_1:0
ValueError: Variable foo/v1 does not exist, or was not created with tf.get_variable(). Did you mean to set reuse=tf.AUTO_REUSE in VarScope?

3.reuse的深层探索

①除了在tf.variable_scope()中设置reuse外,还可以通过tf.get_variable_scope().reuse_variables()来设置
②注意上面这种设置方式有以下几个特点:
1‘只对当前with下的设置有效,退出了with后自动回复设置
2’如果顶格写上,则后面所有的with都会被默认设置为reuse=True
3’可以通过tf.get_variable_scope().reuse来获取当前的reuse状态

tf.reset_default_graph()
#tf.get_variable_scope().reuse_variables()  #全局使用reuse
with tf.variable_scope('foo',reuse=False):  #这里设置为False也会报错,因为已经被全局设定为了reuse=True了v=tf.get_variable(name='v',initializer=tf.constant(1.0))print(v.name)
tf.get_variable_scope().reuse_variables()  #全局使用reuse
with tf.variable_scope('foo'):  #这里不用设置reuse=True了v=tf.get_variable(name='v',initializer=tf.constant(1.0))print(v.name)#输出
foo/v:0
foo/v:0

本人现在的研究方向是:
图像的语义分割,如果有志同道合的朋友,可以组队学习
haiyangpengai@gmail.com qq:1355365561

tf.Variable,tf.get_variable,tf.variable_scope,tf.name_scope区别分析相关推荐

  1. tf.Variable、tf.get_variable、tf.variable_scope、tf.name_scope、random、initializer

    转自:tensorflow学习笔记(二十三):variable与get_variable TF.VARIABLE.TF.GET_VARIABLE.TF.VARIABLE_SCOPE以及TF.NAME_ ...

  2. tf.Variable()、tf.get_variable()

    - tf.Variable() W = tf.Variable(<initial-value>, name=<optional-name>) 用于生成一个初始值为initial ...

  3. tf.Variable 和 tf.get_variable的区别(2)

    上上篇博文也写了这个话题,这次自己又敲了一下代码,再次研究了一下关于tf.Variable() 和 tf.get_variable() 的区别, 我就先不说太多,先直接看看代码,再来总结分析,下面代码 ...

  4. tf.Variable和 tf.get_variable区别(1)

    tensorflow中有两个关于variable的op,tf.Variable()与tf.get_variable()下面介绍这两个创建变量函数的区别 先来看看这两个函数的参数列表,就不打了,直接截图 ...

  5. Tensorflow教程: tf.Variable() 和tf.get_variable()

    七月 上海 | 高性能计算之GPU CUDA培训 7月27-29日三天密集式学习  快速带你入门阅读全文> 正文共364个字,预计阅读时间8分钟. 一.简介 tf.Variable() 1tf. ...

  6. TensorFlow学习笔记(一): tf.Variable() 和tf.get_variable()详解

    对于tf.Variable和tf.get_variable,这两个都是在我们训练模型的时候常遇到的函数,我们首先要知道懂得它的语法格式.常用的语法格式的作用以及在实际代码中是如何调用.如何运行的,运行 ...

  7. tensorflow tf.Variable 的用法

    import tensorflow as tf #导入模块 import numpy as np tf.Variable(3) # 数字输入 <tf.Variable 'Variable:0' ...

  8. tf.Variable()函数

    tf.Variable(initializer,name),参数initializer是初始化参数,name是可自定义的变量名称,用法如下: import tensorflow as tfv1=tf. ...

  9. TensorFlow学习笔记(1):variable与get_variable, name_scope()和variable_scope()

    Variable tensorflow中有两个关于variable的op,tf.Variable()与tf.get_variable()下面介绍这两个的区别 使用tf.Variable时,如果检测到命 ...

最新文章

  1. 【转】C#解析HTML
  2. nginx反向代理、负载均衡、动态请求
  3. OpenCV——素描
  4. C#8.0宝藏好物Async streams
  5. python classmethod static_python @classmethod 和 @staticmethod
  6. mysql 主从 锁库_mysql 5.7.21 主从集群恢复GTID方式(不锁库)
  7. 解决An attempt was made to load a program with an incorrect format.问题
  8. 将html对象转换成jq,2js对象与jq对象之间互转.html
  9. Elasticsearch报错:NodeDisconnectedException[[][IP:9300][cluster:monitor/nodes/liveness] disc
  10. Archlinux安裝指南(uefi+gpt)
  11. mySQL常用操作及基础知识
  12. maple中plot和plots函数的区别——笔记1
  13. Linux基础3-实用进阶
  14. 十大众筹PC:硅谷新生代如何打造下一代计算机
  15. android 加载网络图片,并压缩bitmap内存大小
  16. JVM优化:决定Java堆的大小以及内存占用
  17. 超十万字_超详细SSM整合实践_手动实现权限管理
  18. linux系统漏洞测试过程,Linux下bash破壳漏洞检测方法
  19. 中台的问题,是技术的问题,还是人的问题
  20. 安装计算机配件需要准备的工具,组装电脑需要哪些配件

热门文章

  1. java socket 双网卡_java获取双网卡ip地址
  2. c语言输入身高计算标准体重_女生标准身高体重对照表
  3. LeetCode 1114. 按序打印
  4. 区间DP之环形石子合并
  5. N---Exponentiation
  6. sqli-labs在线网站
  7. ODrive踩坑(二)3508电机和TLE5012B磁编码器参数配置、校准、位置闭环模式转动电机(TLE5012B-E1000)
  8. 【Qt串口调试助手】1.1 - Qt5编写串口调试助手,Qt串口编程
  9. CleanCodeHandbook Chapter 3: Linked List(20-24)
  10. windows的dos(cmd)下使用git commit出现error: pathspec readme.md did not match any file known to git