【问题标题】:TensorFlow initializing Tensor of onesTensorFlow 初始化张量
【发布时间】:2016-02-16 03:18:06
【问题描述】:

所以假设我有一个张量

X = tf.placeholder("float", [None, 5])

所以我知道列数但不知道行数。我需要初始化一个维度为nrows x 1的向量

现在下面的代码块不起作用,

o = tf.ones(shape=(tf.shape(X)[0], 1))
==> TypeError: List of Tensors when single Tensor expected

也没有,

o = tf.ones(shape=(X.get_shape()[0].value, 1))
==> TypeError: Input 'dims' of 'Fill' Op has type 
    string that does not match expected type of int32.

现在,我发现解决这个问题的一种方法是让我的向量成为占位符,

o = tf.placeholder(dtype=tf.float32, shape=[None, 1])

并在我的feed_dict 中传入一个适当大小的 numpy 数组。但是这个解决方案让我觉得不雅,而不是占位符的预期用途。我在这里可能是错的,但肯定有更好的方法。

【问题讨论】:

    标签: python tensorflow


    【解决方案1】:

    解决你的问题的方法是使用 tf.pack 操作:

    o = tf.ones(shape=tf.pack([tf.shape(X)[0], 1]))

    您出错的原因是 TensorFlow 形状应该是整数列表或张量 link。 tf.pack 可以轻松地将整数列表和/或 TensorFlow 标量转换为 Tensor 对象。

    【讨论】:

    • tf.pack 不再被tensorflow>=1.00支持
    • 我认为你可以使用stack
    【解决方案2】:

    试试这个:

    0 * tf.identity(X) + 1
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-06-08
      • 1970-01-01
      • 1970-01-01
      • 2023-03-06
      • 2019-07-30
      • 2016-09-15
      • 1970-01-01
      • 2019-01-23
      相关资源
      最近更新 更多