如何在给定的索引或多个索引(多个索引)处插入一个值到张量中?

问题描述:

我有一个大小为12 x 10的矩阵和一个document_length = [4,3,5]的列表。前4行属于一个文档的句子,其他文档的下3个以及其他文档的最后5个。我需要通过以下方式获得尺寸为15 x 10的新矩阵或张量。如何在给定的索引或多个索引(多个索引)处插入一个值到张量中?

我需要插入一行零,以这种方式,这里max doc长度是5.因此,第一行零必须插入第五个索引(因为第一个doc长度是4)。然后,索引9和10处的2行零(第二个doc长度为3),依此类推。如果问题很混乱,请告诉我。

我已经喂12×10至GRU或LSTM,但它必须是在3D。要获得正确的3D,我需要将12 X 10转换为15 x 10。任何帮助?

+0

是在numpy的格式加载你的矩阵? – martianwars

+0

@martianwars - 实际上12x10是从LSTM中获取的。输出是12x10 numpy数组。但是,因为它是一个张量,所以不能使用numpy索引。 –

+0

您可能需要'tf.unpack()'张量,然后在最终的'tf.pack()'之前插入列表中。 TF没有按;吨似乎有一个'insert'功能 – martianwars

这是一种方法。您首先将12x10张量分解成12个大小的列表。这是使用tf.unstack()函数完成的。

# Assume `words` is my 12x10 tensor 
tensors = tf.unstack(words, 12, axis=0) 

之后,您可以将tf.zeros()张量插入到索引列表中。这里为了简单起见,我将在索引4中插入张量。

b = tf.zeros((10)) 
tensors.insert(4, b) 

最后,tf.stack()您的列表重新构造它。

words = tf.stack(tensors, axis=0) 
+0

如何将零插入到张量。我正在更新我的tensorflow,因为我的版本比较老 –

+0

查看已更新的答案 – martianwars

+0

我会检查并勾选您的答案。如果还有任何疑问,我们可以让线程开放。谢谢 –