繁体   English   中英

TensorFlow将concat-result张量分配给不同形状的张量

[英]TensorFlow assign concat-result tensor to tensor of different shape

我使用concat将形状[150,1]的张量t2附加到张量t1上,张量t1的形状最初为[150,0]。 我想创建一个具有形状[150,1](在轴上连接= 1)的张量,并用新张量覆盖t1。 这是我的代码:

t1.assign(tf.concat(1, [t1, t2]))

我得到的错误是:

ValueError: Dimension 1 in both shapes must be equal, but are 0 and 1

奇怪的是,当我设置axis = 0时,我得到了同样的错误。 不知道发生了什么事; 这应该是一件非常容易的事情。 我怀疑它与t1的Dimension 1为0有关。有什么建议吗? 提前致谢。

[编辑]

事实证明,问题在于“分配”,因为我将t1(形状(150,0))设置为连续结果(形状(150,1)),这使得TF对我尖叫(理所当然)。 有什么方法吗?

为了提供更多的上下文,t1是一个张量,我用它来存储从展开seq2seq RNN生成的logit t2,其中输出序列具有未知长度。 因此,每次展开时,t1的大小将在Dimension 1中增长。

使用reshape

 t1 = tf.placeholder(tf.float32,[150,1])  
 t2 = tf.placeholder(tf.float32,[150])      
 tf.concat(1,[t1,tf.reshape(t2,[150,1])])  

输出:

<tf.Tensor 'concat_2:0' shape=(150, 2) dtype=float32>

问题与tf.assign上的形状更新有关。 您可以将validate_shape设置为False 这将删除tf.assign上的错误,但会因为形状不会更新而产生不良行为。

这是一个TensorFlow的错误,并且有一个与它相关的GitHub问题等待R的实现: https//github.com/tensorflow/tensorflow/issues/5492

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM