环境:Ubuntu14.04,tensorflow=1.4(bazel源码安装),Anaconda python=3.6

声明变量主要有两种方法:tf.Variable和 tf.get_variable,二者的最大区别是:

(1) tf.Variable是一个类,自带很多属性函数;而 tf.get_variable是一个函数;

(2) tf.Variable只能生成独一无二的变量,即如果给出的name已经存在,则会自动修改生成新的变量name;

(3) tf.get_variable可以用于生成共享变量。默认情况下,该函数会进行变量名检查,如果有重复则会报错。当在指定变量域中声明可

以变量共享时,可以重复使用该变量(例如RNN中的参数共享)。

下面给出简单的的示例程序:

import tensorflow as tf

with tf.variable_scope('scope1',reuse=tf.AUTO_REUSE) as scope1:

x1 = tf.Variable(tf.ones([1]),name='x1')

x2 = tf.Variable(tf.zeros([1]),name='x1')

y1 = tf.get_variable('y1',initializer=1.0)

y2 = tf.get_variable('y1',initializer=0.0)

init = tf.global_variables_initializer()

with tf.Session() as sess:

sess.run(init)

print(x1.name,x1.eval())

print(x2.name,x2.eval())

print(y1.name,y1.eval())

print(y2.name,y2.eval())

输出结果为:

scope1/x1:0 [ 1.]

scope1/x1_1:0 [ 0.]

scope1/y1:0 1.0

scope1/y1:0 1.0

1. tf.Variable(…)

tf.Variable(…)使用给定初始值来创建一个新变量,该变量会默认添加到 graph collections listed in collections, which defaults to [GraphKeys.GLOBAL_VARIABLES]。

如果trainable属性被设置为True,该变量同时也会被添加到graph collection GraphKeys.TRAINABLE_VARIABLES.

# tf.Variable

__init__(

initial_value=None,

trainable=True,

collections=None,

validate_shape=True,

caching_device=None,

name=None,

variable_def=None,

dtype=None,

expected_shape=None,

import_scope=None,

constraint=None

)

2. tf.get_variable(…)

tf.get_variable(…)的返回值有两种情形:

使用指定的initializer来创建一个新变量;

当变量重用时,根据变量名搜索返回一个由tf.get_variable创建的已经存在的变量;

get_variable(

name,

shape=None,

dtype=None,

initializer=None,

regularizer=None,

trainable=True,

collections=None,

caching_device=None,

partitioner=None,

validate_shape=True,

use_resource=None,

custom_getter=None,

constraint=None

)

3. 根据名称查找变量

在创建变量时,即使我们不指定变量名称,程序也会自动进行命名。于是,我们可以很方便的根据名称来查找变量,这在抓取参数、finetune模型等很多时候都很有用。

示例1:

通过在tf.global_variables()变量列表中,根据变量名进行匹配搜索查找。 该种搜索方式,可以同时找到由tf.Variable或者tf.get_variable创建的变量。

import tensorflow as tf

x = tf.Variable(1,name='x')

y = tf.get_variable(name='y',shape=[1,2])

for var in tf.global_variables():

if var.name == 'x:0':

print(var)

示例2:

利用get_tensor_by_name()同样可以获得由tf.Variable或者tf.get_variable创建的变量。

需要注意的是,此时获得的是Tensor, 而不是Variable,因此 x不等于x1.

import tensorflow as tf

x = tf.Variable(1,name='x')

y = tf.get_variable(name='y',shape=[1,2])

graph = tf.get_default_graph()

x1 = graph.get_tensor_by_name("x:0")

y1 = graph.get_tensor_by_name("y:0")

示例3:

针对tf.get_variable创建的变量,可以利用变量重用来直接获取已经存在的变量。

with tf.variable_scope("foo"):

bar1 = tf.get_variable("bar", (2,3)) # create

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

bar2 = tf.get_variable("bar") # reuse

with tf.variable_scope("", reuse=True): # root variable scope

bar3 = tf.get_variable("foo/bar") # reuse (equivalent to the above)

print((bar1 is bar2) and (bar2 is bar3))

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

本文标题: tensorflow创建变量以及根据名称查找变量

本文地址: http://www.cppcns.com/jiaoben/python/222160.html

python根据地址查看变量名_tensorflow创建变量以及根据名称查找变量相关推荐

  1. python的变量名有哪些_Python 趣闻:如何获得变量的名字?

    获取变量名 今天我们探讨Python中一个看似很简单,实则并不容易的问题.这个问题是:如何获得变量的名字? 举例说明,给定一个变量var,给它赋值字符串"foo".即 In [1] ...

  2. python不允许使用关键字作为变量名_python函数变量_python不允许使用关键字作为变量名,允许使用内置函数名作为变量名,但这会改变函数 - 云+社区 - 腾讯云...

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建. 在python 中, ...

  3. python的变量名可以是中文吗_Python中用中文变量名、函数名,会影响性能吗?

    首先,python这样的语言,只能做有限的"词法编址"(lexical address),不可能实现 @王加加 所说的"所有变量名函数名等名称,在转成字节码后,只是一个个 ...

  4. 通过IP地址查看计算机名

    通过开始菜单查找cmd,进入命令提示符. 或者通过所有程序,附件,命令提示符. 在命令提示符输入ipconfig,按回车键.查看IP地址.创作中心 IP地址是172.16.101.238. 输入nbt ...

  5. 下列可作为python变量名的是1name_Python关键字不可以作为变量名。

    [单选题]Python语言适合哪些领域的计算问题? (5.0分) [判断题]所谓孳息,就是从原物产生的收益的物质形态.而原物则指产生孳息的物. [多选题]直接违反同一律要求的逻辑错误有( ). [单选 ...

  6. c语言结构体结构体变量名,C语言结构体及结构体变量

    一.结构体类型的定义 结构体是一种新数据类型,属构造类型,它由若干类型各异的"成员"组成:描述这些"成员"可以使用任何基本数据类型,甚至是另外一种构造数据类型都 ...

  7. python dir函数查看函数名

    自定义一个类,并保存为test.py 通过dir可以查看类Car下的函数 class Car():def __init__(self,a,b):self.a = aself.b = bdef car_ ...

  8. python变量说法_Python不允许使用关键字作为变量名,允许使用内置函数名作为变量名,但这会改变函数名的含义...

    根据材料,下列表述不正确的是().A.2003年一2009年,H省农民人均纯收入增加最多的是2008年B.2008 云南西双版纳有"植物王国""动物王国"的称誉 ...

  9. python可以用保留字作为函数的名字吗_Python不允许使用关键字作为变量名,允许使用内置函数名作为变量名,但这会改变函数名的含义...

    [多选题]报表系统中报表公式主要有( ) [多选题]建立账套完成之后,( )不能修改. [单选题]心房颤动的特征性心电图表现是 [单选题]UFO 报表的数据处理能够完成以下哪些任务? [单选题]具有改 ...

最新文章

  1. String,StringBuffer
  2. [译][python]ImportError:attempted relative import with no known parent package
  3. 自动驾驶进入第3阶段 ADAS黑科技守护开车人
  4. Chocolates
  5. [转]模拟电路设计经典教材推荐
  6. div旋转45度_为什么不要买旋转式电动牙刷:欧乐B电动牙刷D12开箱与体验
  7. python学到哪知道baseline_Python NLTK学习6(创建词性标注器)
  8. SQL Server时间粒度系列----第9节时间粒度示例演示
  9. spring12----基于@AspectJ的AOP
  10. Excel的python读写
  11. python怎么安装xlutils_Python3安装xlutils
  12. 用科学数据求真:地月之间不可能电视直播
  13. (测试可用)针式打印机打印WEB页面字体不清晰,解决方法
  14. Centos7 安装teamviewer
  15. 浅谈数字证书的今生前世
  16. 时间序列分析专题(二)
  17. Java课程设计-画图工具
  18. (2000-2020高精度世界人口密度地图下载分享【附下载链接】
  19. Python旅途休憩——闭包
  20. 【区块链技术与应用】(二)

热门文章

  1. Visual Basic 兴衰记
  2. 在 .NET Core 中运行 JavaScript
  3. 利用.NET Core类库System.Reflection.DispatchProxy实现简易Aop
  4. Entity Framework Core 执行SQL语句和存储过程
  5. DDD理论学习系列(3)-- 限界上下文
  6. 在CentOS上使用Jexus托管运行 ZKEACMS
  7. 【深圳】.NET 技术分享交流会
  8. 在IIS上部署你的ASP.NET Core项目
  9. .NET Core Tools转向使用MSBuild项目格式
  10. 数据分块加载——BigPipe 技术【类似facebook】