首页
学习
活动
专区
圈层
工具
发布

TensorFlow修炼之道(2)——变量(Variable)

与常量不同的时,常量创建后,值便无法更改,但是变量创建后 可以修改。并且修改后的值在多个Session中都是可以看见的。 训练模型时,需要使用变量(Variable)保存和更新参数。...变量是包含张量(tensor)的内存缓冲。变量必须要先被 初始化(initialize) ,而且可以在训练时和训练后保存(save)到磁盘中。...创建变量 创建变量有两种方式,一种是使用 tf.Variable 来创建一个新的变量,另一种是使用 tf.get_variable 来获取一个已经存在的变量或者创建一个新的变量。...("v", [1]) 变量集合 TensorFlow 支持将变量存放在集合(collection)中,以便于在不同地方使用。...使用变量 在 TensorFlow 使用变量时,只需要像对待普通的张量(Tensor)来对待它就可以了。对变量进行操作后,生成的结果会是一个张量。

1.4K40

什么是TensorBoard?

这篇文章主要讲讲TensorBoard的基本使用以及name_scope和variable_scope的区别 一、入门TensorBoard 首先来讲讲TensorBoard是什么吧,我当时是在官方文档里学习的...1.1 name_scope和variable_scope 在视频中其实也有提到,我们想要TensorBoard的图能够更好地展示(更加有条理),那一般我们需要对其用name_scope取名。...在前面文章中,创建变量有两种方式,一种是用tf.get_variable()来创建,一种是用tf.Variable()来创建。这两种创建方式也是有区别的。...在tf.name_scope下时,tf.get_variable()创建的变量名不受name_scope 的影响,而且在未指定共享变量时,如果重名就会报错。...---- 要注意的是,下面的代码会报错。因为在scp作用域下压根就没有a这个变量,同时又设置成reuse=True。这里因为的是找不到共享变量而出错!

55420
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    tf.variable和tf.get_Variable以及tf.name_scope和tf.variable_scope的区别

    在训练深度网络时,为了减少需要训练参数的个数(比如具有simase结构的LSTM模型)、或是多机多卡并行化训练大数据大模型(比如数据并行化)等情况时,往往需要共享变量。...、tf.Variable(),tf.get_variable()的作用与区别: tf.Variable()和tf.get_variable()都是用于在一个name_scope下面获取或创建一个变量的两种方式...,区别在于: tf.Variable()会自动检测命名冲突并自行处理,但tf.get_variable()则遇到重名的变量创建且变量名没有设置为共享变量时,则会报错。...tf.variable_scope():一般与tf.name_scope()配合使用,用于管理一个graph中变量的名字,避免变量之间的命名冲突,tf.variable_scope()允许在一个variable_scope...代码示例: 在 tf.name_scope下时,tf.get_variable()创建的变量名不受 name_scope 的影响,而且在未指定共享变量时,如果重名会报错,tf.Variable()会自动检测有没有变量重名

    93360

    2.2 TensorFlow变量管理

    但是在TensorFlow中我们需要注意,变量声明和使用和c语言类似,在声明的过程中需要指明变量类型以及初始值等。...1.1 变量的声明 tensorflow提供了两个变量声明的函数:tf.Variable() 和 tf.get_variable().在功能上两个都是等价的,都是声明一个变量。...具体说说两者的区别: tf.get_variable(“vname”)方法,在创建变量时,如果这个变量vname已经存在,直接使用这个变量,如果不存在,则重新创建; tf.Variable()在创建变量时...tensorflow是符号式编程,变量的的声明只是指明了变量符号,在会话中的初始化函数才会真正的占用内存,分配数值。...它们搭配在一起的两个常见用途:1)变量共享,2)tensorboard画流程图时为了可视化封装变量[1] 2.1 变量共享 在测试网络的时候实际上是采用训练网络的结果,那么这个时候的参数必须使用训练网络的参数

    96630

    Tensorflow入门教程(三)——如何使用Scope

    上一篇我介绍了Tensorflow中张量的静态和动态特性。这一篇我会说一说如何使用Scope来管理Tensorflow中的变量和张量。...1、使用tf.name_scope Tensorflow中的变量和张量是有名称属性的,用于在符号图中标识它们。我们如果在创建变量或张量时没有指定名称属性,Tensorflow会自动指定一个名称。 ?...现在我们看一下使用tf.name_scope来管理变量和张量的情况。 ? 注意:在Tensorflow中定义新变量有两种方法:创建tf.Variable对象或调用tf.get_variable。...用一个新名称调用tf.get_variable会创建一个新变量,但是如果存在相同名称的变量时,这会引发ValueError异常,这也就是告诉我们不允许重新声明相同名称的变量。...使用tf.name_scope和tf.variable_scope来管理Tensorflow变量和张量的益处我就不多说了,大家在实际项目中好好体会吧。

    1.2K20

    tensorflow变量命名空间与可视化

    variable_scope 使用tf.variable_scope定义的命名空间,只要空间名称不同,定义的变量互不干挠,即使函数name参数相同 如果是在相同命名空间下, 如果是不可重用的(reuse...=False),tf. get_variable函数会查找在当前命名空间下是否存在由tf.get_variable定义的同名变量(而不是tf.Variable定义的),如果不存在,则新建对象,否则会报错...Variable不管在什么情况下都是创建新变量,自己解决命名冲突 下面举个例子说明 import tensorflow as tf from tensorflow.python.framework...name_scope 使用name_scope命名空间 get_variable不受name_scope命名空间约束 Variable受命名空间约束,但可以自己解决冲突 import tensorflow...总结两个命名空间的作用不同 variable_scope与get_variable搭配使用可以使得共享变量 name_scope主要用来tensorboard可视化 tensorboard可视化

    1.2K60

    基于tensorflow的MNIST数字识别

    MNIST数据集是NIST数据集的一个子集,它包含了60000张图片作为训练数据,10000张图片作为测试数据。在MNIST数据集中的每一张图片都代表了0~9中的一个数字。...在使用Tensorflow训练神经网络时, # 一般将代表训练轮数的变量指定为不可训练的参数。...在真实的应用中,这部分数据在训练时是不可见的,这个数据只是作为 # 模型优劣的最后评价标准。...tf.variable_scope函数生成的上下文管理器也会创建一个tensorflow中的命名空间,在命名空间内创建的变量名称都会带上这个命名空间作为前缀。...而且更加方便的是,因为可以在变量加载时将滑动平均变量# 重命名,所以可以直接通过同样的名字在训练时使用变量自身,而在测试时使用变量的滑动平# 均值。在这个函数中也会将变量的正则化损失加入损失集合。

    3.3K11

    Tensorflow 命名空间与计算图可视化

    在 Tensorboard 的默认视图中,Tensorflow 计算图中同一个命名空间下的所有节点会被缩略为一个节点,而顶层命名空间的节点才会被显示在 Tensorboard 可视化效果图中。...,唯一的区别在于使用 tf.get_variable 函数时: import tensorflow as tf # 不同的命名空间 with tf.variable_scope("foo"):...with tf.name_scope("a"): # 使用tf.Variable函数生成变量时会受到tf.name_scope影响,于是这个变量的名称为"a/Variable" a =...tf.Variable([1]) print(a.name) # a/Variable: 0 # tf.get_variable函数不受头tf.name_scope函数的影响,...# tf.get_variable("b",[1]) 通过对变量命名空间进行管理,使用 Tensorboard 查看模型的结构时更加清晰 import tensorflow as tf with tf.name_scope

    1K30

    TF入门02-TensorFlow Ops

    当用户在TensorBoard激活的TensorFlow程序中执行某些操作时,这些操作将导出到事件日志文件中。...运算图定义了ops以及它们的依赖关系。我们可以通过点击结点来确定结点的值以及结点类型。 ? 在了解TensorBoard之后,我们来看看TensorFlow中的各种op。 2....在模型训练过程中,我们希望模型的权重参数能不断优化,因此常量不适用于这种场景 常量的值作为graph定义的一部分被存储和序列化,每次graph加载时,常量的值都需要复制一份;变量是分开存储的,可能放在单独的参数服务器上...5.1 Variable的两种创建方法 tf.Variable()和tf.get_variable(),使用方法如下: # create variables with tf.Variable s = tf.Variable...在TensorFlow 中,它意味着直到你需要计算一个op时才对其进行创建。

    1.9K30

    《Scikit-Learn与TensorFlow机器学习实用指南》 第09章 启动并运行TensorFlow

    在多CPU、GPU、服务器上并行计算 当 TensorFlow 于 2015 年 11 月开放源代码时,已有许多深度学习的流行开源库(表 9-1 列出了一些),公平地说,大部分 TensorFlow 的功能已经存在于一个库或另一个库中...提示 在 Jupyter(或 Python shell)中,通常在实验时多次运行相同的命令。...在分布式 TensorFlow 中,变量状态存储在服务器上,而不是在会话中,因此多个会话可以共享相同的变量。...您每次运行程序时都需要使用不同的日志目录,否则 TensorBoard 将会合并来自不同运行的统计信息,这将会使可视化混乱。 最简单的解决方案是在日志目录名称中包含时间戳。...提示 使用get_variable()创建的变量始终以其variable_scope的名称作为前缀命名(例如,relu/threshold),但对于所有其他节点(包括使用tf.Variable()创建的变量

    1.1K31

    《Scikit-Learn与TensorFlow机器学习实用指南》第9章 启动并运行TensorFlow

    在 Jupyter(或 Python shell)中,通常在实验时多次运行相同的命令。...在分布式 TensorFlow 中,变量状态存储在服务器上,而不是在会话中,因此多个会话可以共享相同的变量。...为此,我们需要一种在每次迭代时用下一个小批量替换X和Y的方法。 最简单的方法是使用占位符(placeholder)节点。...您每次运行程序时都需要使用不同的日志目录,否则 TensorBoard 将会合并来自不同运行的统计信息,这将会混乱可视化。 最简单的解决方案是在日志目录名称中包含时间戳。...使用get_variable()创建的变量始终以其variable_scope的名称作为前缀命名(例如,relu/threshold),但对于所有其他节点(包括使用tf.Variable()创建的变量)

    2.2K111

    共享变量 tensorflow解读

    你可以在怎么使用变量中所描述的方式来创建,初始化,保存及加载单一的变量.但是当创建复杂的模块时,通常你需要共享大量变量集并且如果你还想在同一个地方初始化这所有的变量,我们又该怎么做呢.本教程就是演示如何使用...一个更高明的做法,不用调用类,而是利用TensorFlow 提供了变量作用域 机制,当构建一个视图时,很容易就可以共享命名过的变量....变量作用域实例 变量作用域机制在TensorFlow中主要由两部分组成: tf.get_variable(, , ): 通过所给的名字创建或是返回一个变量....这里有一些在TensorFlow中使用的初始化变量: tf.constant_initializer(value) 初始化一切所提供的值, tf.random_uniform_initializer(...即使你不能直接设置 reuse 为 False ,但是你可以输入一个重用变量作用域,然后就释放掉,就成为非重用的变量.当打开一个变量作用域时,使用reuse=True 作为参数是可以的.但也要注意,同一个原因

    95920

    task8 GAN text-to-image

    tf.variable_scope下,tf.Variable和tf.get_variable都受影响。 因此可以在不同的name_scope下轻松地共享同一变量。...另外就是,tf.Variable每次调用都会创建新的变量,而tf.get_variable会在没有该变量时创建;而在已创建该变量时,调用reuse就可以复用该变量(如果不调用reuse就会报错)。...但DCGAN的网络具有以下特点: 不使用pooling层,取而代之的是生成器在upsizing使用带有stride的逆卷积层,辨别器在downsizing使用带有stride的卷积层 数据流每次卷积/逆卷积之后...在GAN-CLS中,D应当判断出真实图像,且图像要符合文字描述。...(根据经验,β=0.5时效果不错) 所以,尽管差值后的合成特征没有对应的真实图片(当然没有,因为特征本来都是合成的),我们仍然可以用合成特征搭配真实图片来训练辨别器D,在训练过程中,辨别器将更善于判断图片与文字描述是否匹配

    85221

    深度学习(2)——tensorflow可视化TensorFlow变量作用域TensorFlow可视化示例

    前言:主要介绍一下,TensorFlow变量作用域和可视化,变量作用域能更好底可视化展示数据流图 TensorFlow变量作用域 通过tf.Variable我们可以创建变量,但是当模型复杂的时候,需要构建大量的变...针对这个问题,可以通过TensorFlow提供的变量作用域机制来解决, 在构建一个图的时候,就可以非常容易的使用共享命名过的变量。...变量作用域机制在TensorFlow中主要通过两部分组成: tf.get_variable:通过所给定的名字创建或者返回一个对应的变量 tf.variable_scope:为通过创建的变量或者操作Operation...1 生成时间文件 TensorBoard通过读取TensorFlow的事件文件来运行,TensorFlow的事件文件 包括了在TensorFlow运行中涉及到的主要数据,比如:scalar、image...通过tf.summary相关API,将数据添加summary中,然后在Session中执行这些 操作得到一个序列化Summary protobuf对象,然后使用FileWriter对象将汇总 的序列数据写入到磁盘

    58250
    领券