【问题标题】:Why does tf.zeros allow an unknown dimension whereas tf.get_variable doesn't?为什么 tf.zeros 允许未知维度,而 tf.get_variable 不允许?
【发布时间】:2017-05-19 07:52:34
【问题描述】:

给定一些占位符张量x,这样:

x = tf.placeholder(None, 100)

我想知道为什么:

h = tf.zeros(shape = (tf.shape(x)[0], 50))

工作,但类似:

h = tf.get_variable("h", shape = (tf.shape(x)[0], 50), initializer = tf.constant_initializer(0.0))

给我一​​个值错误:

ValueError: 必须完全定义新变量 (pred/h) 的形状, 而是 (?, 50)

他们不是都初始化了一些变量吗,为什么要让tf.zeros(...) 使用未知大小,而tf.get_variable(...) 没有?

【问题讨论】:

    标签: tensorflow


    【解决方案1】:

    您可以为运行局部张量(可以在需要计算时动态创建)设置动态形状,例如零、一、随机张量等。

    但是对于变量,你不能,因为它们需要在每次运行之间分配和保存,所以它们需要有一个固定的形状(这不依赖于运行操作)。

    要获得相同的结果,您应该使用x.get_shape()[0],如果它已经定义,它将返回请求的维度。

    【讨论】:

      猜你喜欢
      • 2019-01-23
      • 2017-12-10
      • 1970-01-01
      • 1970-01-01
      • 2019-06-01
      • 2016-12-28
      • 2020-06-02
      • 2020-11-03
      • 1970-01-01
      相关资源
      最近更新 更多