【问题标题】:Tensorflow cannot initialize tf.Variable for dynamic batch sizeTensorflow 无法为动态批量大小初始化 tf.Variable
【发布时间】:2017-02-23 23:01:13
【问题描述】:

我尝试创建一个具有动态形状的 tf.Variable。下面概述了这个问题。

这样做很有效。

init_bias = tf.random_uniform(shape=[self.config.hidden_layer_size, tf.shape(self.question_inputs)[0]])

但是,当我尝试这样做时:

init_bias = tf.Variable(init_bias)

它抛出错误 ValueError: initial_value must have a shape specified: Tensor("random_uniform:0", shape=(?, ?), dtype=float32)

刚来上下文(问题输入是一个占位符,动态批处理):

self.question_inputs = tf.placeholder(tf.int32, shape=[None, self.config.qmax])

似乎将动态值放入随机统一会给出 shape=(?,?) 这会导致 tf.Variable 出现错误。

感谢并感谢任何帮助!

【问题讨论】:

    标签: tensorflow


    【解决方案1】:

    这应该可行:

    init_bias = tf.Variable(init_bias,validate_shape=False)
    

    如果 validate_shape 为 False,则 tensorflow 允许使用未知形状的值初始化变量。

    不过,我觉得你的所作所为有点奇怪。在张量流中,变量通常用于存储神经网络的权重,无论批量大小如何,其形状都保持固定。通过将可变长度张量传递到图中(并将其与固定形状偏差变量相乘/相加)来处理可变批量大小。

    【讨论】:

    • 我在预加载数据中发现了一个用例:tensorflow.org/programmers_guide/reading_data#preloaded_data。您可能想要提供不同大小的不同数据集。
    • 我仍然收到错误InvalidArgumentError (see above for traceback): You must feed a value for placeholder tensor 'Placeholder' with dtype int32 [[Node: Placeholder = Placeholder[dtype=DT_INT32, shape=[], device="/job:localhost/replica:0/task:0/device:CPU:0"]()]]
    猜你喜欢
    • 2019-06-16
    • 1970-01-01
    • 2017-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-28
    • 1970-01-01
    • 2019-07-12
    相关资源
    最近更新 更多