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

环境: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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/296704.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

要来吗,不错的WPF技术交流群!(大批干货今日自取)

欢迎加入我的编程技术交流群今日分享:1 《WPF-微软官方文档》2 《WPF客户端应用系统开发实战》全集3 《2021秋招WPF高频面试题-附答案》欢迎加入我的编程技术交流群MVP答疑解惑超多技术干货免费获取优质岗位和技术兼职内推和数百.NET/WPF 开发者一起进阶众多资料今…

用计算机配置打印机IP,网络打印机怎么设置ip(手把手教你设置打印机IP地址)...

如何设置打印机IP地址,是一个长期以来困好多小伙伴的一个问题,那今天我们就以 HP Laserjet Pro 100 MFP M128系列打印机为例,为大家介绍一下打印机IP地址的设置方法~步骤一:打印配置报告查看有效IP地址M128fp,M128fna …

河流为什么是弯曲的?

全世界只有3.14 % 的人关注了爆炸吧知识我们看到的河流,特别是在平原上的河流,总是弯弯曲曲,很少有笔直的河道。这是为什么呢?这得从力学上做一点解释。图1 弯弯曲曲的河流首先我们来关注一个流体力学中的二次流现象。取一口宽底的…

poj--2019 Cornfields 2维RMQ

题目大意: 给定一个 N*N 的数组 求以(x1, y1) 为左上角 (x1 b -1 ,y1 b -1)为右下角 这个b*b的范围内最大值减最小值 看到最大值最小值当然想到RMQ啦 View Code //Accepted 27392K 594MS C …

NET问答: 如何检查一个 string 是否为有效的 url 格式?

咨询区 kenchilada:我发现 framework 里有两个验证url有效性的方法:Uri.IsWellFormedUriString 和 Uri.TryCreate ,我试了一下这两个方法在验证 文件路径 时都返回 true。请问我有什么有效的方法可以验证某个 string 是否为有效的 HTTP URL 格…

svn命令在linux下的使用

1、将文件checkout到本地目录 引用svn checkout path(path是服务器上的目录) 例如:svn checkout svn://192.168.1.1/pro/domain 简写:svn co2、往版本库中添加新的文件 引用svn add file 例如:svn add test.php(添加te…

学生渐进片add如何给_渐进镜片的说明与镜架选择

近年来,许多眼镜店都进行了渐进多焦点镜片(下面简称:渐进镜片)的推广与应用,产品也越来越普及,但由于很多眼镜店并没有对从业人员进行系统培训,同时对渐进镜片的了解又甚少,在一些注意事项上经验不足&#…

html5 svg组态图,绘制SVG内容到Canvas的HTML5应用

SVG与Canvas是HTML5上绘制图形应用的两种完全不同模式的技术,两种绘制图形方式各有优缺点,但两者并非水火不容,尤其是SVG内容可直接绘制在Canvas上的功能,使得两者可以完美的融合在一起,让Canvas可享用到现有丰富的SVG…

天哪!男朋友对大姨妈的误解有多深?

1 大姨妈就是随时随地给你一拳那种▼2 怀疑不是袜子太紧而是腿太粗▼3 画面戛然而止希望小姑娘她妈下手轻点▼4 大家都是艺术生▼5 “你妈式”量体温▼6 当代网友上网冲浪的最大阻碍▼7 给你个眼神你自己体会~▼你点的每个赞,我都认真当成了喜欢

[转]经典SQL语句大全

一、基础 1、说明:创建数据库 CREATE DATABASE database-name 2、说明:删除数据库 drop database dbname 3、说明:备份sql server --- 创建 备份数据的 device USE master EXEC sp_addumpdevice disk, testBack, c:\mssql7backup\MyNwind_1.…

TreeSet集合中的自定义比较器

import java.util.Comparator; import java.util.TreeSet; /* 当treeset集合中的元素不具备比较功能,或者具备的比较功能不是所需要的 例如person对象中的自然排序是按照年龄进行排序的,但现在的需求是按照姓名进行排序,改源代码的方式不可…

python34怎么安装_简明Python3教程 4.安装

如果你已经安装了Python 2.x,你不需要在安装Python 3.0前卸载Python 2.x。这两者可以共存。GNU/Linux用户和BSD用户如果你使用类似于Ubuntu、Fedora、OpenSUSE、Debian、CentOS或其他你选择的GNU/Linux发行版,或类似于FreeBSD的BSD系统,你的系…

Dapr + .NET 实战(十四)虚拟机集群部署 mDNS + Consul

前面我们说了在单机模式下和K8S集群下的Dapr实战,这次我们来看看如何在不使用K8S的情况下,在一个传统的虚拟机集群里来部署Dapr。1.环境准备我们准备两台centos7虚拟机Dapr1:192.168.43.131Dapr2:192.168.43.1322.Dapr CLI安装分别…

哪个男孩不想拥有这种牌面?

1 全国最嗨的烧烤地摊没有之一▼2 为什么我们的雨刷和别人的不一样?▼3 好羡慕有这样的妈妈▼4 猫:你别进来,我这儿不接待小孩儿!孩子:我就进去看看▼5 像极了我考试的样子▼6 今天教大家一个找钻石的好办法▼7 …

有意思的记录-shell(持续更新)

1.统计重复行的个数 sort uid.txt | uniq -c 2.查看压缩文件 cat *.gz | gunzip > 123 3.查看2个文件的交集、差集 comm用于比较两个有序文件,默认第一列为第一个文件独有的元素,第二列为第二个文件独有的元素,第三列为共有元素&#xff0…

html怎么快速打出来的,javascript – 快速打印HTML5画布

我搜索了很多,找到了一个完美的解决方案:)使用onclick事件function printCanvas(){var dataUrl document.getElementById(anycanvas).toDataURL(); //attempt to save base64 string to server using this varvar windowContent ;windowContent windowContent Print canvas…

OutOfMemoryException异常解析

一、概述在国庆休假快结束的最后一天晚上接到了部门老大的电话,某省的服务会出现崩溃问题。需要赶紧修复,没错这次的主角依旧是上次的“远古项目”没有办法同事都在休假没有人能帮忙开电脑远程只能打车去公司。远程链接上服务器之后查看日志发现抛出的堆…

LeetCode:Largest Number - 求整型数组中各元素可拼合成的最大数字

2019独角兽企业重金招聘Python工程师标准>>> 1、题目名称 Largest Number(求整型数组中各元素可拼合成的最大数字) 2、题目地址 https://leetcode.com/problems/largest-number/ 3、题目内容 英文:Given a list of non negative i…

js实现样式切换

2019独角兽企业重金招聘Python工程师标准>>> <ul id"styles"> <li id"default">经典</li> <li id"blue">淡蓝</li> <li id"brown">棕色</li> </ul> $("#styles li&…

CV算法面试题学习

本文记录了CV算法题的学习。 CV算法面试题学习 1 点在多边形内&#xff08;point in polygon&#xff09;2 高斯滤波器3 ViTPatch EmbeddingPosition EmbeddingTransformer Encoder完整的ViT模型 4 SE模块5 Dense Block6 Batch Normalization 1 点在多边形内&#xff08;point …