在不设置初始值的情况下创建tensorflow变量

在不设置初始值的情况下创建tensorflow变量,tensorflow,initialization,Tensorflow,Initialization,这些天我在学习Tensorflow 当我们使用tf.Variable创建张量时,第一个参数是“initial_value”。所以,即使我们心中没有特定的值作为初始值,也必须给出这个值 以下是一个例子: a = tf.Variable(tf.zeros([784, 200]), name="a") 我认为在某些情况下,我们不希望设置初始值,因为变量将在稍后进行评估,如下所示: a = c + e # where "c" and "e" are some Tensor variables. 我

这些天我在学习Tensorflow

当我们使用tf.Variable创建张量时,第一个参数是“initial_value”。所以,即使我们心中没有特定的值作为初始值,也必须给出这个值

以下是一个例子:

a = tf.Variable(tf.zeros([784, 200]), name="a")
我认为在某些情况下,我们不希望设置初始值,因为变量将在稍后进行评估,如下所示:

a = c + e  # where "c" and "e" are some Tensor variables.

我的问题是在上述情况下,使用
tf初始化上述
a
。零([784200])
完全是浪费计算。在这种情况下,最好的做法是什么?

我不知道这里是否有定义明确的最佳做法,但我同意仅仅为了定义形状而构建张量是浪费的。更好的方法是避免显式地初始化
A
。这里的技巧是记住TensorFlow操作返回
tf.Tensor
对象。这些张量的形状由输入到运算中的张量以及运算对这些张量的影响决定。例如,
z=tf.add(x,y)
接受两个张量并返回具有相同形状的第三个张量

import tensorflow as tf

c = tf.constant([[1.0, 2.0], [3.0, 4.0]])
e = tf.constant([[1.0, 1.0], [1.0, 1.0]])

# Here I define a via operator overload. Note, no initialization.
a = c + e

sess = tf.Session()

# Now, evaluate a in the session. Still no intitializtion.
a_out = sess.run(a)

print(a_out)
这个答案可能有点不令人满意,因为您仍然希望
a
具有特定形状的
tf.Tensor
。指定形状的方式是通过图形体系结构。此体系结构从图形中的
tf.placeholder
节点开始(您可以找到更多信息)。这些要求您指定一个形状,这些形状是图形中的基本形状

希望这是有帮助的