对于动态批量大小,Tensorflow无法初始化tf.Variable

时间:2016-10-14 13:28:55

标签: tensorflow

我尝试创建一个动态形状的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必须具有指定的形状:Tensor(" random_uniform:0",shape =(?,?),dtype = float32)

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

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

似乎将动态值置于随机均匀中会给出shape =(?,?),这会给出tf.Variable的错误。

感谢并感谢任何帮助!

1 个答案:

答案 0 :(得分:7)

这应该有效:

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

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

然而,你所做的对我来说似乎有点奇怪。在张量流中,变量通常用于存储神经网络的权重,其形状保持固定而与批量大小无关。通过将可变长度张量传递到图形中(并将其与固定形状偏差变量相乘/相加)来处理可变批量大小。