TensorArray TensorArray_1_0:无法从 TensorArray 索引 0 读取,因为它尚未写入 [英] TensorArray TensorArray_1_0: Could not read from TensorArray index 0 because it has not yet been written to

查看:23
本文介绍了TensorArray TensorArray_1_0:无法从 TensorArray 索引 0 读取,因为它尚未写入的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我不知道如何使用张量数组.这是代码.那是什么错误?

I don't know how to use tensorarray. Here's the code. What's the bug in that?

import tensorflow as tf

aI=tf.TensorArray(tf.int32, 2)
aO=tf.TensorArray(tf.int32, 2)
aI=aI.unpack([[1,2],[1,2]])
def body(i,aI,aO):
    aO.write(i, aI.read(i)+1)
    return (i+1, aI, aO)
cond=lambda i, *_ : i<2
_, _, aO=tf.while_loop(cond, body, [0,aI,aO])
r=aO.pack()
with tf.Session() as sess:
    res=sess.run(r)
    print('done!')

推荐答案

我解决了.似乎在while_loopbody中,我们应该用的返回值重新分配旧的TensorArray aO>aO.write():

I solved. It seems that inside the body of while_loop we should reassign the old TensorArray aO with the returned value of aO.write():

def body(i,aI,aO):
    aO=aO.write(i, aI.read(i)+1)
    return (i+1, aI, aO)

完整代码:

import tensorflow as tf

aI=tf.TensorArray(tf.int32, 2)
aO=tf.TensorArray(tf.int32, 2)
aI=aI.unpack([[1,2],[1,2]])
def body(i,aI,aO):
    aO=aO.write(i, aI.read(i)+1)
    return (i+1, aI, aO)
cond=lambda i, *_ : i<2
_, _, aO=tf.while_loop(cond, body, [0,aI,aO])
r=aO.pack()
with tf.Session() as sess:
    res=sess.run(r)
    print('done!')

这篇关于TensorArray TensorArray_1_0:无法从 TensorArray 索引 0 读取,因为它尚未写入的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆