我需要我的模型在训练和测试中表现不同。我试图建立一个序列到序列的模型,我希望在训练时将预期的输出输入解码器,在测试时将实际输出输入解码器。我定义了以下占位符,它应该包含一个缩放器值。在
training = tf.placeholder(tf.bool, None, 'training')
在我的解码器中,我使用下面的select语句,它在第一个时间步中返回所有的零,但是根据它是否训练,在最后一个输出和预期输出之间进行选择。在
^{pr2}$当我在训练模式下运行模型时,我使用下面的方法将training设置为True。在
sess.run([accuracy, cross_entropy, train_step], feed_dict = {input_tensor: x_train, expected_output: y_train, training: True})
当它运行时,我得到以下错误。在
tensorflow.python.framework.errors.InvalidArgumentError: Inputs to operation decoder/Select of type Select must have the same size and shape. Input 0: [] != input 1: [32,128]
似乎条件需要和我在其中选择的张量大小相同。但是,我想选择一个或另一个表达式,而不是元素选择。有更好的方法吗?我想select应该只广播布尔值。我可以把它平铺,但这似乎有点低效。在
您是对的,
tf.select
希望条件与其他两个输入具有相同的形状。在您应该改为使用
tf.cond
。关于在张量流图中使用if条件,请参见this detailed answer。在相关问题 更多 >
编程相关推荐