2017-01-31 129 views
1

我使用concat将形状[150,1]的张量t2追加到最初形状为[150,0]的张量t1上。我想创建一个形状为[150,1]的张量(在轴上连接= 1),并用新张量覆盖t1。这里是我的代码:TensorFlow将连续张量分配给不同形状的张量

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

我得到的错误是:

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

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

[编辑]

事实证明,这个问题是用 “分配”,因为我设定值T1(形状(150,0))到CONCAT结果(形状(150,1)),其正在让我的TF尖叫(理所当然)。任何方式在这个?

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

+0

这听起来像你在正确的轨道上。你能给出一个小的,自包含的例子来说明问题吗? –

+0

@PeterHawkins事实证明,问题与“分配”,而不是“concat”;我不能给一个张量(150,1)(连续张量)赋予张量为(150,0)(t1)的张量。有没有解决的办法? 此外,不知道这是否奇怪,但我看到你是(或者)是斯坦福大学的博士候选人。我是斯坦福大学的新生本科生! –

回答

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> 
+0

让我提供一些更多的上下文。 t1是我用来存储logits的张量,t2是输入向量的logit。我在t1上添加了很多t2张量,所以我无法在每次迭代中重塑t1,因为它应该继续变大。另外,我希望第一次迭代时的输出形状为(150,1)。 –

+0

帮助我一个小例子。 –