在张量流中保持特定的张量行块

时间:2017-06-25 20:51:36

标签: python-3.x split tensorflow deep-learning

我在python 3.x中使用tensorflow 1.0.1。

我的张量Ln x seq行,我想保留每i行的第一个seq元素,i在{ {1}}。因此clen(c)=n中的i-th元素表示c i-th大小的seq分区中要保留的元素数量从该分区的开始。

例如,如果LL=list(range(10)),则所需结果为c=[2,4]。当然,在实际示例中,D=[0,1,5,6,7,8]LD张量。

我尝试使用tf.split(T,c,0),其中我计算了每个seq中要丢弃的项目数,按照示例获取? x dim。有了这个,在丢弃所有其他元素之后,所需的行将是c=[2,3,4,1]结果列表的元素。

问题是,tf.split的值和长度是通过占位符提供的,在图形创建过程中是未知的,所以我得到一个例外:

c

tf.split()的文档说如果无法从ValueError: Cannot infer num from shape Tensor("tensorname", shape=(?,), dtype=int32) arg中推断出分割数num,它会抛出上面的异常。因此,在图形构建时必须知道必须的分割数量?

如果是这样,你能想到一个可以通过静态定义的方法来实现下面的目标或解决方法吗?

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

原来我们可以使用tf.gathertf.gather_nd从张量中获取特定索引。

为了获得所需的位置,我直接提供他们的索引,而不是c,并使用tf.gather(L,indices)

获取它们