【发布时间】:2016-04-15 06:55:11
【问题描述】:
我有一个二维张量:
a = [[6, 5, 4], [3, 2, 1], [1, 2, 3], [4, 5, 6], [7, 8, 1], [5, 2 , 6]]
我想随机和不重复提取K个一维张量。接下来,将它们组合成另一个二维张量 b:
b = [5, 2, 6], [3, 2, 1], [6, 5, 4]
我没有找到任何这样做的功能,所以我将其实现如下:
rand_var_1 = tf.random_crop(a, size=[1, 3], seed=1)
rand_var_2 = tf.random_crop(a, size=[1, 3], seed=2)
rand_var_3 = tf.random_crop(a, size=[1, 3], seed=3)
rand_var_4 = tf.random_crop(a, size=[1, 3], seed=4)
b = tf.concat(0, [rand_var_1, rand_var_2, rand_var_3, rand_var_4])
b_rs = sess.run(b)
print "b_rs:\n",b_rs
但结果具有重复的一维张量,例如:
bb=[[5, 2, 6], [3, 2, 1], [5, 2, 6]]
有人可以帮我解决这个问题吗?
【问题讨论】:
-
不确定这是否适用于 tensorflow,但对于 NumPy 数组,它可以通过以下方式实现:
a[np.random.choice(a.shape[0],3, replace=False)]。 -
这在 tensorflow 中不起作用,但我决定尝试一下:
a_shuffled = tf.random_shuffle(a, seed=12), b = tf.slice(a_shuffled, [0, 0], [K,len(a[0])]),我认为他们在某种程度上正在做同样的事情。无论如何,谢谢你的帮助:)。
标签: python numpy tensorflow