【问题标题】:How to efficiently pass initial value to get_variable如何有效地将初始值传递给 get_variable
【发布时间】:2016-05-17 09:44:27
【问题描述】:

我想使用tf.get_variable 创建一个变量,它应该用一个numpy数组初始化。

据我所知,创建变量有两种方法,tf.Variabletf.get_variable。我们可以轻松地将初始值传递给tf.Variable 创建的变量。但似乎没有直接的方法可以对tf.get_variable 创建的人做同样的事情。

我现在一直在做的是首先使用tf.convert_to_tensor创建一个带有numpy数组的张量,然后将此张量作为initializer传递给tf.get_variable。但这对我来说似乎并不高效,因为我有一个非常大的数组作为初始值,所以我必须在我的图表中存储这个大数组两次。

因此,我想知道是否有一些更有效的方法可以做到这一点?使用Variable 是避免我上面提到的效率问题的唯一方法吗?

【问题讨论】:

  • 您是否尝试过使用tf.constant_initializer()? (doc) 有了它,您可以将 numpy 数组作为参数传递,并将其复制到张量。
  • 不知道,谢谢。但这很奇怪,在tf.constant_initializer 的文档中,它说参数“值:Python 标量。初始化变量的所有元素都将设置为此值”。但是当传递一个 numpy 数组而不是一个标量给它时,它确实有效。你知道原因吗?
  • 不,我认为这是文档中的错字。

标签: python neural-network tensorflow


【解决方案1】:

答案是使用TensorFlow的tf.constant_initializer(value)函数(cf.doc)。

虽然文档说只能使用标量值,但您可以传递任意维度的 numpy 数组。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-28
    • 1970-01-01
    • 2019-05-24
    • 1970-01-01
    • 1970-01-01
    • 2010-12-25
    相关资源
    最近更新 更多