如何从给定的二维张量中提取 n 个一维张量?
How to extract n 1-D tensors from a given 2-D tensor?
我有一个二维张量:
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]]
有人可以帮我解决这个问题吗?
以下应该有效,基本上生成数组长度为数组 a
的数字数组,将它们打乱并使用第一个 K
索引并获取行,
import numpy as np
#Number of samples
K = 3
#Array
a =[[6, 5, 4], [3, 2, 1], [1, 2, 3], [4, 5, 6], [7, 8, 1], [5, 2, 6]]
N = len(a)
#Get an array on size of a, shuffle and take first K to use
#permutation used as suggested by @EelcoHoogendoorn
indices = np.random.permutation(N)
#Take the first k samples
samples = indices[:K]
b = [a[i] for i in samples]
#Print
print('a = ', a)
print('b = ', b)
我有一个二维张量:
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]]
有人可以帮我解决这个问题吗?
以下应该有效,基本上生成数组长度为数组 a
的数字数组,将它们打乱并使用第一个 K
索引并获取行,
import numpy as np
#Number of samples
K = 3
#Array
a =[[6, 5, 4], [3, 2, 1], [1, 2, 3], [4, 5, 6], [7, 8, 1], [5, 2, 6]]
N = len(a)
#Get an array on size of a, shuffle and take first K to use
#permutation used as suggested by @EelcoHoogendoorn
indices = np.random.permutation(N)
#Take the first k samples
samples = indices[:K]
b = [a[i] for i in samples]
#Print
print('a = ', a)
print('b = ', b)