【问题标题】:Keep specific tensor row chunks in tensorflow在张量流中保留特定的张量行块
【发布时间】:2017-06-25 20:51:35
【问题描述】:

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

我有一个张量Ln x seq 行,我想在c 中为i 保留seq 行的第一个i 元素。所以len(c)=n,而c 中的i-th 元素表示要在Li-th seq 大小的分区中保留多少个元素,从该分区的开头开始。

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

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

问题是,c 的值和长度是通过占位符提供的,并且在图形创建过程中是未知的,所以我得到一个异常:

ValueError: Cannot infer num from shape Tensor("tensorname", shape=(?,), dtype=int32)

tf.split() 的文档说,如果无法从 num_or_size_splits arg 中推断出拆分的数量 num,则会引发上述异常。那么在图构建时绝对必须知道分割的数量?

如果是这样,您能想出一种可静态定义的方法来实现以下目标或解决方法吗?

提前感谢您的帮助。

【问题讨论】:

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


    【解决方案1】:

    事实证明,我们可以使用 tf.gathertf.gather_nd 从张量中获取特定索引。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-08-25
      • 1970-01-01
      • 1970-01-01
      • 2018-04-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-01
      相关资源
      最近更新 更多