Tensorflow不能初始化tf.动态批大小的变量



我尝试创建一个tf。具有动态形状的变量。以下概述了问题。

这样做有效。

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必须有一个指定的形状:, ?), dtype=float32)

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

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

似乎将动态值放入随机均匀中会产生shape=(?,?),这会在tf.Variable中产生错误。

谢谢你的帮助!

应该可以:

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

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

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

最新更新