我使用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中增长。
答案 0 :(得分:0)
使用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>
答案 1 :(得分:0)
问题与tf.assign上的形状更新有关。您可以将validate_shape
设置为False
。这将删除tf.assign上的错误,但会因为形状不会更新而产生不良行为。
这是TensorFlow的错误,并且有一个与之相关的GitHub问题等待R的实现:https://github.com/tensorflow/tensorflow/issues/5492