我试图在图表中使用切片张量对象。代码如下:
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
答案 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。