【问题标题】:Creating a tensorflow Variable without setting the initial value [duplicate]在不设置初始值的情况下创建张量流变量[重复]
【发布时间】:2018-06-04 23:35:08
【问题描述】:

这些天我正在学习 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.zeros([784, 200]) 初始化上述a 完全是在浪费计算。在这种情况下,最佳做法是什么?

【问题讨论】:

    标签: tensorflow initialization


    【解决方案1】:

    我不知道这里是否有明确定义的最佳实践,但我同意仅仅为了定义形状而构建张量是一种浪费。更好的方法是完全避免初始化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 节点开始(您可以找到更多信息here)。这些要求您指定一个形状,而这些形状是图表中的基础形状。

    希望对您有所帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-12-10
      • 1970-01-01
      • 1970-01-01
      • 2023-02-23
      • 2021-06-26
      • 2020-05-02
      • 1970-01-01
      相关资源
      最近更新 更多