代码之家  ›  专栏  ›  技术社区  ›  syltruong

在张量流中,从张量沿0轴随机(子)采样k项

  •  0
  • syltruong  · 技术社区  · 8 年前

    给定张量 rank>=1 T ,我想随机抽样 k 沿0轴均匀输入。

    编辑: 采样应该作为惰性操作作为计算图的一部分,并且应该在每次调用时输出不同的随机项。

    例如,给定 T 等级 2 :

    T = tf.constant( \
         [[1,1,1,1,1],
          [2,2,2,2,2],
          [3,3,3,3,3],
          ....
          [99,99,99,99,99],
          [100,100,100,100,100]] \
         )
    

    k=3 ,可能的输出为:

    #output = \
    #   [[34,34,34,34,34],
    #    [6,6,6,6,6],
    #    [72,72,72,72,72]]
    

    如何在tensorflow中实现这一点?

    1 回复  |  直到 8 年前
        1
  •  2
  •   syltruong    8 年前

    可以对索引数组使用随机洗牌:

    抢先一步 sample_num 索引,并使用它们来选取输入片段。

    idxs = tf.range(tf.shape(input)[0])
    ridxs = tf.random_shuffle(idx)[:sample_num]
    rinput = tf.gather(input, ridxs)