tensorflow张量赋值 变量和张量的区别

深度学习(5)
大数据(5)
参考书籍《Tensorflow实战Google框架》郑泽宇等
Tensorflow是一款谷歌开源的深度学习工具,与其他深度学习工具(比如caffe、Deeplearning4j等)相比,其受关注度和欢迎程度尤为突出。在谷歌内部,Tensorflow已经广泛用于语音搜索、广告、电商、图片、街景图、翻译、Youtube等众多产品中。
Tensorflow计算模型—计算图
Tensorflow中一个重要的概念就是计算图,tensorflow中所有计算都会转化为计算图中的节点,而节点之间的边描述了计算之间的依赖关系。下图中的节点add代表一个加法计算,a和b两个常量不依赖于其他任何计算。add计算依赖读取两个常量的取值,图中可以看到有一条从a到add的有向边和从b到add的有向边。图中没有任何计算依赖于add的结果,所以节点add没有任何指向其他节点的边。Tensorflow中所有程序都可以通过类似的计算图的形式来表示,也是软件的基本计算模型。
Tensorflow的程度一般分为两个阶段。第一个阶段定义计算图中所有的计算,第二个阶段为执行计算。在下面计算过程中,Tensorflow会自动将定义的计算转化为计算图上的节点。在tensorflow中,系统会自动维护一个默认的德计算图。注意,tensorflow中变量存取的不是值,而是取值的计算过程。
import tensorflow as tf
#替换模块名称,使程序更简洁
a=tf.constant([1.0, 2.0], name=&a&)
b=tf.constant([2.0, 3.0], name=&b&)
result=a+b
print(a.graph is tf.get_default_graph())
print(result)
当然,除了使用默认的计算图,也可以通过tf.Graph函数来生成新的计算图,这样可使不同计算图上的张量和运算不会共享。
Tensorflow数据模型—张量
Tensorflow中,所有的数据都通过张量形式来表示。从功能角度上将,张量可被简单理解为多维数组,零阶张量为标量,表示一个数;一阶张量为一个一维数组;第n阶张量可理解为一个n维数组。与数组不同的是,数组一般存储的是计算的结果,而张量存储的是运算结果的引用,即张量保存的是如何得到结果的计算过程。上文中代码result输出是一个张量(包含名字、维度和类型),如下所示:
Tensor(&add_4:0&, shape=(2,), dtype=float32)
张量的第一个属性名字不仅是张量的唯一标识符,同时还给出这个张量是如何计算出来的。”add_4”表示计算图中节点的名称,而冒号后面的”0”表示当前张量来自该节点第一个输出(编号从0开始)。
张量的第二个属性是维度shape,描述张量的维度信息。Shape=(2,)表示张量为一个一维数组,数组长度为2。
张量的第三个属性是类型,每个张量都有一个唯一的类型。Tensorflow会对参与运算的所有张量进行类型的检查,当发现类型不匹配时会报错。
张量的使用大致可分为两类:第一类,张量用于对中间计算结果的引用;第二类,张量用于获取最终的计算结果。
Tensorflow运行模型—会话
前面介绍了tensorflow的计算模型和数据存储,本节将介绍tensorflow如何将利用会话(session)模型来执行定义好的运算。会话拥有并管理tensorflow程序运行时的所有资源。注意当计算完成后需要关闭会话来完成资源回收,否则会造成资源泄漏。
Tensorflow中会话模式一般有两种,第一种模式需要明确调用会话生成函数和关闭会话函数,示例代码如下。此种模式有一个问题,当程序因为异常退出时,关闭会话的函数不会执行,从而导致资源泄漏。
import tensorflow as tf
a=tf.constant([1.0, 2.0], name=&a&)
b=tf.constant([2.0, 3.0], name=&b&)
result=a+b
sess=tf.Session()
sess.run(result)
sess.close()
为了解决这个问题,tensorflow可通过python上下文管理器来使用会话,此为会话的第二种模式。上下文管理机制,只需要将所有的计算放在with内部即可。当程序计算异常退出时,必然会退出上下文管理机制,那么就会释放所有的资源,不会造成资源泄漏。
import tensorflow as tf
a=tf.constant([1.0, 2.0], name=&a&)
b=tf.constant([2.0, 3.0], name=&b&)
result=a+b
with tf.Session() as sess:
sess.run(result)
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:57105次
积分:1161
积分:1161
排名:千里之外
原创:62篇
评论:11条
分享人工智能与高精度计算仿真相关信息技术、生活感悟。
(3)(6)(1)(2)(20)(3)(16)(17)tensorflow(5)
本文主要对TensorFlow的基础知识做一下总结回顾
计算图:计算模型
计算图概念
  TensorFlow的所有计算都会被转化为计算图上的节点。
  Tensor就是张量。可以简单理解为多维数组,表明了它的数据结构,Flow就是“流”,它直观地表达了张量之间通过计算相互转化的过程。
  TensorFlow是一个通过计算图的形式来表述计算的编程系统。TensorFlow的每一个计算都是计算图上的一个节点,而节点之间的边表述了计算之间的依赖关系。如果一个运算的输入依赖于另一个运算的输出,那这两个运算有依赖关系。
计算图的使用
  TensorFlow程序一般可以分为两个阶段。第一个阶段需要定义计算图中所有的计算;第二个阶段为执行计算。在这个过程中,TensorFlow会自动将定义的计算转化为图上的节点。
   tf.get_default_graph()可以获取当前默认的计算图。 TensorFlow可以使用tf.Graph()来生成新的计算图,不同计算图上的张量和运算都不会共享。
   tf.Graph.device()函数可以来指定运行计算的设备。tf.Graph.device('/gpu:0')可以将计算跑在GPU上。
  通过集合(collection)可以管理不同类别的资源。tf.add_to_collection()函数可以将资源加入一个或多个集合中,然后通过tf.get_collection()获取一个集合里面的所有资源。
  这里的资源可以是张量、变量或者队列资源。
TensorFlow中的计算图不仅仅可以用来隔离张量和计算,它还提供了管理张量和计算的机制。
张量:数据模型
  张量是TensorFlow管理数据的形式。在TensorFlow中,所有的数据都是通过张量的形式来表示。从功能的角度讲,张量可以被简单的理解为多维数组。
  张量在TensorFlow中实现并不是直接采用数组的形式,只是对TensorFlow中运算结果的引用。在张量中并没有真正保存数字,它保存的如何得到这些数字的运算过程。
  一个张量主要保存三个属性:名字(name)、维度(shape)、类型(type)。
Tensor("add:0", shape = (2,), dtype = float32)
  这个shape可以看出,保存的是列向量。
张量的使用
  张量的使用主要有两类:
  第一个,是对中间计算结果的引用。
  第二个,当计算图构造完成后,张量可以用来获得计算结果,也就是在会话(Session)中得到具体的结果。
会话:运行模型
  前面介绍了TensorFlow是如何组织数据和运算的。本节将介绍如何使用TensorFlow中的会话(Session)来执行定义好的运算。
  会话拥有并管理TensorFlow程序运行时的所有资源。当所有计算完成之后需要关闭会话来帮助系统回收资源,否则就可能出现资源泄露的问题。
  TensorFlow中使用会话的模式一般有两种:
指定关闭模式
  需要明确调用会话生成函数和关闭会话函数,这种模式的代码如下。
  这种模式,需要调用Session.close()函数来关闭会话并释放资源。有时候程序异常退出,关闭会话可能不会执行从而导致资源泄露。
上下文模式
  为了解决异常退出时资源释放的问题,TensorFlow可以通过Python的上下文管理器使用会话,也就是这种模式。
  不再调用”Session.Close()来自动释放资源。
  这样来解决资源泄露问题。
  TensorFlow会自动生成一个默认的计算图,如果没有特殊指定,运算会自动加入这个计算图中。TensorFlow中的会话也有类似的机制,但是TensorFlow不会自动生成默认的会话,而是需要手动指定。
  当默认的会话被指定之后,可以用tf.Tensor.eval()函数来计算一个张量的取值。
  tf.InteractiveSession()可以自动将生成的会话注册为默认会话。
  无论哪种方法都可以通过tf.ConfigProto()来配置需要生成的会话。通过ConfigProto可以配置类似并行的线程数、GPU分配策略、运算超时时间等参数。最常用的参数有两个:
  (1)、allow_soft_placement
  当参数为True时,GPU不可用时候,就放在CPU上进行。这样的移植性更强。
  (2)、log_device_placement
  当参数为True时,会记录每个节点在哪个设备上进行了方便调试。而在生产环境中可以设为False,减少日志量。
神经网络参数与TensorFlow变量
  在神经网路中,变量(tf.Variable)的作用就是保存和更新神经网络中的参数。tf.Variable(tf.random_normal([2, 3], stddev = 2))
这个变量将产生一个2x3的矩阵,矩阵中的元素是均值为0,标准差为2的随机数。tf.random_normal可以通过mean参数来指定平均值,在没有指定时候默认为0。通过正态分布的随机数来初始化神经网络中的参数是一个非常常用的方法。还有别的方法,在此不再赘述。
  TensorFlow也支持通过常数来初始化一个变量。例如,tf.zeros([2, 3], int32) -&[[0, 0, 0], [0, 0, 0]]。类似的,还有tf.ones, tf.fill, tf.constant。
  TensorFlow提供了一个更加便捷的方式来完成变量初始化过程。tf.global_variables_initializer()方法可以初始化所有变量。
  变量和张量之间的关系:变量的声明函数tf.Variable()是一个运算,这个运算的输出结果就是一个张量,这个张量也就是本书中介绍的变量。所以,变量只是一个特殊的张量。
  collection:所有的变量都会被自动的加入GraphKeys.VARIABLES这个集合。通过tf.all_variables函数可以拿到当前计算图上所有的变量。拿到计算图上所有的变量有助于持久化整个计算图的运行状态。
  可以通过变量声明函数中的trainable参数来区分需要优化的参数和其他不需要优化的参数。如果声明变量时参数trainable为True,那么这个变量就会被加入GraphKeys.TRAINABLE_VARIABLES集合。在TensorFlow中可以通过tf.trainable_variables函数得到所有需要优化的参数。设置神经网络参数的过程就是神经网络的训练过程。
  TensorFlow通过迭代训练,如果使用常量来表示训练样本数据,会导致计算图非常大,而且利用率特别低。所以TensorFlow提供了placeholder机制用于提供输入数据。placeholder相当于定义了一个位置,这个位置中的数据在程序运行时再指定。这样在程序中就不需要生成大量常量来提供输入数据,而只需要将数据通过placeholder传入TensorFlow计算图。当placeholder定义时,这个位置上的数据类型是需要指定的。和其他张量一样,placeholder的类型也是不可以改变的。placeholder中数据的维度信息可以根据提供的数据推导得出,所以不一定给出。
  在训练时候,placeholder需要feed_dict来进行传值。sess.run(y, feed_dict = { x: [[0.7, 0.9]]})。
训练神经网络过程主要分为三步:
(1)、定义神经网络的结构和前向传播的输出结果;
(2)、定义损失函数以及选择反向传播优化的算法;
(3)、生成会话,并且在训练数据上反复运行反向传播优化算法。
无论神经网络的结构如何变化,这三个步骤是不变的。
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:13807次
排名:千里之外
原创:15篇
(10)(7)(1)TensorFlow上手要点都总结在这儿了,你还有理由偷懒吗?_凤凰资讯
TensorFlow上手要点都总结在这儿了,你还有理由偷懒吗?
用微信扫描二维码分享至好友和朋友圈
雷锋网按:本文作者 Steven Dufresne,总结了新手学 TensorFlow 需要的核心知识点和实操内容,旨在鼓励更多人借 TensorFlow 迈入深度学习殿堂&。作为基础入门教程,该教程从 TensorFlow 原理简介讲到上手操作,对核心概念逐条解释,非常适合基础薄弱、苦无入门途径的新手。雷锋网 AI 研习社编译。
Steven Dufresne:在90年代我开始写神经网络软件。TensorFlow开源后,一直十分渴望用它搭建一些有趣的东西。&
谷歌的人工智能系统是现在的新热点。当TensorFlow可以被安装在树莓派上,操作变得非常容易。在上面我很快就搭建了一个二进制神经网络。这篇文章中,我将把经验分享给大家,帮助其他想要尝试、深入了解神经网络的人更快上手。&
TensorFlow是什么?
引用TensorFlow官网的话,TensorFlow是一个“采用数据流图进行数值计算的开源软件库”。其中“数据流图”是什么意思?这是个很酷的东西。在正式回答之前,我们先谈谈一个简单神经网络的结构。
神经网络基础
一个简单神经网络由输入层(input units)、隐层(hidden units)、阈值(bias unit)、输出层(output units)几部分构成。输入层负责接收数据。隐层之所以这么叫是因为从用户的角度来看,它们是隐藏的。输出层输出我们获得的结果。旁边的阈值是用来控制隐含层和输出层的值是否输出(即超过阈值的神经元才能输出)。两两不同神经元之间的连接是权重,只是一些数字,需要靠训练获得。
训练神经网络,就是为了给权重找到最佳的值,这让神经网络一步步变得“智能”。在下面这个例子中,输入神经元的值被设置为二进制数字0,0,0。接下来TensorFlow会完成这之间的所有事情,而输出神经元会神奇得包含数字0,0,1。即便你漏掉了,它也知道二进制中000下面一个数是001,001接下来是010,就这样一直到111.一旦权重被设定了合适的值,它将知道如何去计数。&
在运行神经网络中有一个步骤是将每一个权重乘以其对应的输入神经元,然后将乘积结果保存在相应的隐藏神经元。
我们可以将这些神经元和权重看作成数列(array),在Python中也被称为列表(list)。从数学的角度来看,它们都是矩阵。图中我们只绘制出了其中一部分,这里将输入层矩阵和权重矩阵相乘,得到五元素隐藏层矩阵(亦称为列表或数列)。
从矩阵到张量
在TensorFlow中,这些列表(lists)被称为张量(tensors)。矩阵相乘被称为操作(operation,也翻译作计算节点或运算),即程序员常说的op,阅读TensorFlow官方文件时会经常遇到。进一步讲,神经网络就是一堆张量、以及操作张量的 op 的集合,它们共同构成了神经网络图(graph)。
以下图片取自《》这篇文章,用于检测训练前后的张量值变化。张量是图中的连线,上面的数字代表张量的维度(dimensions)。连接张量的节点是各种操作(op),双击后可以看到更多的细节,比如后面一张图是双击后展现的第一层(layer 1)的细节。
最下面的X,是占位符操作,向输入张量赋值。沿着左边的线向上是输入张量(input tensor)。上面节点标着MatMul操作,使输入张量(input tensor)和权重张量(weight tensor,导向MatMul操作的另一条线)矩阵相乘。&
所有这些只是为了更直观的展示出图、张量和操作是什么,让大家更好的理解为什么TensorFlow被称为是“采用数据流图进行数值计算的开源软件库”。但是,我们为什么要创建这些图呢?&
为什么创建图?
当前,TensorFlow 只有 Python 的稳定 API,Python 是一门解释型语言。神经网络需要大量的运算,大型神经网络包含数千甚至数百万的权重,通过解释(interpret)每一步来计算的效率极低。
因此,我们通过创建一个由张量和 op 构成的图,包括所有的数学运算甚至变量的初始值,来描述神经网络的结构。只有在创建图之后,才能加载到TensorFlow里的Session。这被称为TensorFlow的“延迟执行”(deferred execution)。 Session通过高效代码来运行计算图。不仅如此,许多运算,例如矩阵相乘,都可以在GPU上完成。此外,TensorFlow也支持多台机器或者GPU同时运行。
创建二进制计数器图
以下是创建二进制计数器神经网络(binary counter neural network)的脚本,完整的代码可以在我的
网页上找到。注意,在TensorBoard里还有其他的一些代码保存在其中。
下面我们将从这些代码开始创建张量和 op 组成的图。
首先导入 &tensorflow& 模块,创建一个 session 随后使用。同时,为了让脚本更容易理解,我们也创建了一些变量,包含了网络中的神经元个数。
然后,我们为输入和输出的神经元创建占位符(placeholders)。占位符是TensorFlow里一个操作,便于后续输入实际的数值。这里X和y_是图中的两个张量,每一个都有相关联的&placeholder 操作。
你可能会觉得奇怪,为什么我们要将占位符shape定义为二维列表[None,NUM_INPUTS]和[None,NUM_OUTPUTS],第一个维度都是”None”?从整体来看,神经网络有点像我们每次输入一个值,训练它生成一个特定输出值。但更有效率的方式是,一次提供多个输入\输出对(pair),这就是 batch 。上面shape中的第一维,是每个 batch 中有几组输入/输出对。创建一个 batch 之前我们并不知道里面有几组。实际上,后续我们将使用同一个图来进行训练、测试以及实际使用,所以 batch 的大小不会每次都相同。因此,我们将第一维的大小设置为 Python 占位符对象 ”None“。
接下来,我们创建神经网络图的第一层:将权重定义为W_fc1,阈值(或偏差)定义为b_fc1,隐层定义为h_fc1。这里”fc”意为“完全连接(fully connected)”的意思,因为权重把每一个输入神经元和每一个隐藏神经元连接起来。
tf.truncated_normal 导致了一系列操作和张量,将会把所有权重赋值为标准化的随机数字。
Variable 的操作会给出初始化的值,这里是随机数字,在后面可以多次引用。一旦训练完,也可以很方便的将神经网络保存至文件中。
你可以看到我们用&matmul 操作来执行矩阵乘法的位置。我们插入一个 add 操作来加入偏差权重(bias weights)。其中&relu 运算执行的就是“激活函数”(activation function)。矩阵乘法和加法都是线性运算。神经网络用线性运算能做的事非常少。激活方程提供了一些非线性。这里的relu激活函数,就是将所有小于0的值设置为0,其余值不变。不管你信不信,这为神经网络能够学习的东西打开了一扇全新的大门。
神经网络第二层中的权重和阈值与第一层设置的一样,只是输出层不同。我们再次进行矩阵相乘,这一回乘的是权重和隐层,随后加入偏差权重(bias weights),激活函数被留到下一组代码。
与上面的relu类似,Sigmoid是另一个激活函数,也是非线性的。这里我使用sigmoid函数,一定程度上是因为它能使最终输出值为一个0和1之间,对于二进制计数器而言是一个理想的选择。在我们的例子中,为了表示二进制111,所有的输出神经元都可以有一个很大的值。这和图像分类不同,后者会希望仅仅用一个输出单元来输出一个很大的值。举个例子,比如一张图像里有长颈鹿,我们会希望代表长颈鹿的输出单元输出相当大的值。这种情况下,用softmax函数作为激活函数反倒更适合。
仔细看下前面的代码,会发现似乎有些重复,我们插入了两次sigmoid。实际是我们创建了两次不同的、并行的输出。其中cross_entropy张量将被用来训练神经网络。而&results 张量则是后续用来执行训练过的神经网络,不管它被训练出来作何目的。这是目前我能想到的最好的方法。
最后一件事就是训练(training)。也就是基于训练数据调整所有的权重。记住,在这里我们仍然只是创建一个图。真正的“训练”发生在我们开始运行这个图的时候。
运行过程中供选择的优化器很多,这里我选取了&tf.train.RMSPropOptimizer。因为就像sigmoid一样,它比较适合所有输出值都可能较大的情况。而针对分类的情形,例如图像分类,用tf.train.GradientDescentOptimizer效果可能更好。
训练和使用二进制计数器
在完成创建图之后,就可以开始训练了。
首先,要准备一些训练数据:包括输入变量 inputvals &和目标变量 targetvals 。其中 inputvals 包含输入值,后者的每一个都有对应的 targetvals 目标值。例如,inputvals[0]即[0, 0, 0] ,对应的输出或目标值为targetvals[0] ,也就是&[0, 0, 1] 。
do_training和save_trained都可以硬编码,每次都可以进行更改,或者使用命令行参数进行设置。
首先使所有 Variable 操作对张量初始化;然后,将之前创建的图从底部到&train_step执行最多不超过 10001 遍;这是最后一个添加到图中的东西。我们将&inputvals和targetvals通过RMSPropOptimizer导入train_step操作。这就是通过调整权重,在给定输入值的情况下,让输出值不断接近目标值的步骤。只要输出值和目标值之间的误差足够小,小到某个能承受的范围,这个循环就会停止。
如果你有成百上千的输入/输出组,你可以一次训练一个子集,也就是前面提到的一批(batch)。但这里我们一共只有8组,所以每次都全放进去。
我们也可以将训练好的神经网络保存在一个文件(file)中,下次就不用再训练了。下次可以直接导入一个已经训练过的神经网络文件,文件中只包含进行过变量运算后的张量的值,而不包含整个图的结构。所以即便是执行已经训练好的图,我们仍然需要脚本来创建图形。MetaGraphs可以进行文件保存和导入图,但这里我们不这么做。
请注意,我们是从图形底部运行至结果张量(results tensor),在训练网络中不断重复的创建结果。
我们输入000,希望它返回一个接近001的值。然后将返回的值重复输入再次执行。这样总共运行9次,保证从000数到111有足够的次数,之后再次回到000。
以下就是成功训练后的输出结果。在循环中被训练了200次(steps)。在实际中,训练了10001次仍没有有效降低训练误差的情况非常罕见。一旦训练成功,训练多少次并不重要。
运行二进制计数器
前面说过,这里讲的二进制计数神经网络代码可以在我的主页上找到。你可以根据这些代码开始学习,或者观看TensorFlow官网上的其他入门教程。下一步,根据机器人识别物体上获取的灵感,我想通过它做一些硬件方面的研究。
via&,雷锋网编译
&“TensorFlow & 神经网络算法高级应用班”要开课啦!
从初级到高级,理论+实战,一站式深度了解 TensorFlow!
本课程面向深度学习开发者,讲授如何利用 TensorFlow 解决图像识别、文本分析等具体问题。课程跨度为 10 周,将从 TensorFlow 的原理与基础实战技巧开始,一步步教授学员如何在 TensorFlow 上搭建 CNN、自编码、RNN、GAN 等模型,并最终掌握一整套基于 TensorFlow 做深度学习开发的专业技能。
两名授课老师佟达、白发川身为 ThoughtWorks 的资深技术专家,具有丰富的大数据平台搭建、深度学习系统开发项目经验。
时间:每周二、四晚 20:00-21:00
开课时长:总学时 20 小时,分 10 周完成,每周2次,每次 1 小时
线上授课地址:
用微信扫描二维码分享至好友和朋友圈
凤凰资讯官方微信
播放数:2397175
播放数:593865
播放数:1839468
播放数:5808920您所在位置: &
&nbsp&&nbsp&nbsp&&nbsp
Tensorflow_学习笔记_.docx 51页
本文档一共被下载:
次 ,您可全文免费在线阅读后下载本文档。
下载提示
1.本站不保证该用户上传的文档完整性,不预览、不比对内容而直接下载产生的反悔问题本站不予受理。
2.该文档所得收入(下载+内容+预览三)归上传者、原创者。
3.登录后可充值,立即自动返金币,充值渠道很便利
需要金币:200 &&
Tensorflow_学习笔记_
你可能关注的文档:
··········
··········
变量:创建、初始化、保存和加载当训练模型时,用变量来存储和更新参数。变量包含张量 (Tensor)存放于内存的缓存区。建模时它们需要被明确地初始化,模型训练后它们必须被存储到磁盘。这些变量的值可在之后模型训练和分析是被加载。本文档描述以下两个TensorFlow类。点击以下链接可查看完整的API文档:tf.Variable?类tf.train.Saver?类创建当创建一个变量时,你将一个张量作为初始值传入构造函数Variable()。TensorFlow提供了一系列操作符来初始化张量,初始值是常量或是随机值。注意,所有这些操作符都需要你指定张量的shape。那个形状自动成为变量的shape。变量的shape通常是固定的,但TensorFlow提供了高级的机制来重新调整其行列数。# Create two variables.weights = tf.Variable(tf.random_normal([784, 200], stddev=0.35),name=&weights&)biases = tf.Variable(tf.zeros([200]), name=&biases&)调用tf.Variable()添加一些操作(Op, operation)到graph:一个Variable操作存放变量的值。一个初始化op将变量设置为初始值。这事实上是一个tf.assign操作.初始值的操作,例如示例中对biases变量的zeros操作也被加入了graph。tf.Variable的返回值是Python的tf.Variable类的一个实例。初始化变量的初始化必须在模型的其它操作运行之前先明确地完成。最简单的方法就是添加一个给所有变量初始化的操作,并在使用模型之前首先运行那个操作。你或者可以从检查点文件中重新获取变量值,详见下文。使用tf.initialize_all_variables()添加一个操作对变量做初始化。记得在完全构建好模型并加载之后再运行那个操作。# Create two variables.weights = tf.Variable(tf.random_normal([784, 200], stddev=0.35),name=&weights&)biases = tf.Variable(tf.zeros([200]), name=&biases&)...# Add an op to initialize the variables.init_op = tf.initialize_all_variables()# Later, when launching the modelwith tf.Session() as sess:
# Run the init operation.sess.run(init_op)
# Use the model
...由另一个变量初始化你有时候会需要用另一个变量的初始化值给当前变量初始化。由于tf.initialize_all_variables()是并行地初始化所有变量,所以在有这种需求的情况下需要小心。用其它变量的值初始化一个新的变量时,使用其它变量的initialized_value()属性。你可以直接把已初始化的值作为新变量的初始值,或者把它当做tensor计算得到一个值赋予新变量。# Create a variable with a random value.weights = tf.Variable(tf.random_normal([784, 200], stddev=0.35),name=&weights&)# Create another variable with the same value as 'weights'.w2 = tf.Variable(weights.initialized_value(), name=&w2&)# Create another variable with twice the value of 'weights'w_twice = tf.Variable(weights.initialized_value() * 0.2, name=&w_twice&)自定义初始化tf.initialize_all_variables()函数便捷地添加一个op来初始化模型的所有变量。你也可以给它传入一组变量进行初始化。详情请见Variables Documentation,包括检查变量是否被初始化。保存和加载最简单的保存和恢复模型的方法是使用tf.train.Saver对象。构造器给graph的所有变
正在加载中,请稍后...}

我要回帖

更多关于 tensorflow张量赋值 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信