我尝试创建一个动态形状的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的错误。
感谢并感谢任何帮助!
答案 0 :(得分:7)
这应该有效:
init_bias = tf.Variable(init_bias,validate_shape=False)
如果validate_shape为False,则tensorflow允许使用未知形状的值初始化变量。
然而,你所做的对我来说似乎有点奇怪。在张量流中,变量通常用于存储神经网络的权重,其形状保持固定而与批量大小无关。通过将可变长度张量传递到图形中(并将其与固定形状偏差变量相乘/相加)来处理可变批量大小。