tensorflow while_loop:ValueError:不支持任何值

时间:2017-01-18 06:19:12

标签: python tensorflow

我试图在图表中使用切片张量对象。代码如下:

        utt_inputs = []
        idx = tf.zeros(shape=(), dtype=tf.int32)
        def add_inputs(idx):
            utt_input = tf.slice(last_outputs, begin=[idx, 0], size=[self.args.uttWindowSize, self.args.wordUnits])
            utt_inputs.append(utt_input)

        def my_cond(idx):
            idx = tf.add(idx, 1)
            return tf.less(idx, self.batchSize)

        tf.while_loop(cond=my_cond, body=add_inputs, loop_vars=[idx])

其中self.batchSize是placeholder的{​​{1}}。 Last_outputs是一个二维张量。但是,当我运行代码时,tensorflow会出错:

tf.int32

1 个答案:

答案 0 :(得分:1)

传递给body参数的函数应返回张量值,而不是None。尝试将功能更改为以下内容。

def add_inputs(idx):
    utt_input = tf.slice(last_outputs, begin=[idx, 0],
    size=[self.args.uttWindowSize, self.args.wordUnits])
    utt_inputs.append(utt_input)
    return tf.constant(0 , dtype=tf.int32 , name="ret_val") #Dummy

来自docs

  

body是一个可调用的,返回一个(可能是嵌套的)元组,named元组或相同arity(长度和结构)和类型的张量列表loop_vars。