我是TensorFlow的新手。在阅读现有文档时,我发现该术语tensor
确实令人困惑。因此,我需要澄清以下问题:
tensor
和Variable
,tensor
vs. tf.constant
,’张量’vs.之间是什么关系tf.placeholder
?
它们都是张量类型吗?
TensorFlow没有一流的Tensor对象,这意味着Tensor
在运行时执行的基础图中没有任何概念。相反,该图由相互连接的op节点组成,代表操作。操作分配内存的输出,这些都可以在端点上:0
,:1
等等,你可以认为这些端点作为的Tensor
。如果具有tensor
,则nodename:0
可以将其值提取为sess.run(tensor)
或sess.run('nodename:0')
。执行粒度发生在操作级别,因此该run
方法将执行op,该op将计算所有端点,而不仅仅是:0
端点。可能有一个没有输出的Op节点(例如tf.group
),则没有张量与其关联。没有底层Op节点就不可能有张量。
您可以通过执行以下操作来检查基础图中发生了什么
tf.reset_default_graph()
value = tf.constant(1)
print(tf.get_default_graph().as_graph_def())
因此,tf.constant
有了一个操作节点,您可以使用sess.run("Const:0")
或获取它sess.run(value)
同样,value=tf.placeholder(tf.int32)
创建一个具有name的常规节点Placeholder
,您可以将其作为feed_dict={"Placeholder:0":2}
或馈入feed_dict={value:2}
。您不能在同一session.run
调用中提供和获取占位符,但是可以通过tf.identity
在顶部附加节点并获取该结果来查看结果。
对于变量
tf.reset_default_graph()
value = tf.Variable(tf.ones_initializer()(()))
value2 = value+3
print(tf.get_default_graph().as_graph_def())
你会看到,它创建两个节点Variable
和Variable/read
,该:0
点要在这两个节点获取一个有效的值。但是Variable:0
具有特殊ref
类型,这意味着它可以用作变异操作的输入。Python调用的结果tf.Variable
是一个PythonVariable
对象,并且有一些Python魔术可以替代Variable/read:0
或Variable:0
取决于是否需要进行突变。由于大多数操作只有1个端点,:0
因此将其删除。另一个例子是Queue
-close()
方法将创建一个新的Close
op节点,该节点连接到Queue
op。总而言之-
根据用途对python对象进行操作Variable
并Queue
映射到不同的基础TensorFlow op节点。
对于诸如此类tf.split
或tf.nn.top_k
创建具有多个端点的节点的操作,Python的session.run
调用会自动将输出包装在tuple
或可单独获取collections.namedtuple
的Tensor
对象中。
问题内容: 由于我需要在使用Tensorflow训练模型之前为数据编写一些预处理程序,因此需要对进行一些修改。但是,我不知道如何像使用一样修改值。 最好的方法是可以直接修改。但是,在当前版本的Tensorflow中似乎不可能。另一种方法是改变到该进程,然后用改回来。 关键是如何更改为。 1):https : //www.tensorflow.org/versions/r0.8/api_docs/p
我很难理解官方文档(https://www.khronos.org/opengl/wiki/rendering_pipeline_overview)中使用的术语 > 它说准备顶点数组数据可以类似于给定一个3D位置数据和UV纹理坐标列表,以及一个索引列表,它可以生成一个顶点流。 然后需要对这些顶点流进行解释,以便OpenGL可以对其进行操作。例如,12个顶点的流可以被解释为4个单独的三角形或10个依
10行关键代码实现的线性回归 # -*- coding: utf-8 -*- import numpy as np import tensorflow as tf # 随机生成1000个点,围绕在y=0.1x+0.3的直线周围 num_points = 1000 vectors_set = [] for i in xrange(num_points): x1 = np.random.no
问题内容: 我无法按名称恢复张量,我什至不知道是否可能。 我有一个创建图的函数: 我想在此函数之外访问变量S1_conv1。我试过了: 但这给了我一个错误: ValueError:共享不足:不允许使用变量scale_1 / Scale1_first_relu。您是说要在VarScope中设置“ reuse = None”? 但这有效: 我可以解决这个问题 但我不想那样做。 我认为我的问题是S1_c
从这里开始 与tf. Variable不同,tf. ResourceVariable具有明确定义的语义学。在TensorFlow图中,ResourceVariable的每次使用都会向图添加一个read_value操作。read_value操作返回的Tensors保证可以看到read_value依赖的任何操作(直接、间接或通过控件依赖)中发生的对变量值的所有修改,并且保证不会看到对read_valu
问题内容: 我想在中复制以下代码。例如,我想为所有先前具有值的张量索引分配a 。 如果我在其中编写类似的代码,则会出现以下错误。 方括号中的条件应为。 有没有一种方法可以实现这种“条件赋值”(因为缺少更好的名称)? 问题答案: TensorFlow API中提供了几种比较运算符。 但是,在直接操纵张量时,没有什么等效于简洁的NumPy语法。你必须要使用个人的,和运营商执行相同的操作。 您的NumP