如何使用字典将包含 N int 的等级 1 的张量修改为包含大小为 M 的 N 向量的等级 2 的张量
在 python 中类似于:
dict = {1 : [1,2,3] , 2 : [3,2,1]}
array1 = np.array([1,1,2,1,2])
array2 = np.array([dict[x] for x in array1])
但我不能迭代张量(除了while循环,但我认为这不是最佳解决方案)
如何使用字典将包含 N int 的等级 1 的张量修改为包含大小为 M 的 N 向量的等级 2 的张量
在 python 中类似于:
dict = {1 : [1,2,3] , 2 : [3,2,1]}
array1 = np.array([1,1,2,1,2])
array2 = np.array([dict[x] for x in array1])
但我不能迭代张量(除了while循环,但我认为这不是最佳解决方案)
如果您拥有的 dict 类似于
dict = {1: tf.constant([1, 2, 3]), 2: tf.constant([1, 2, 3])}
tensor1 = tf.constant([1, 1, 2, 1, 2])
那么这样的事情应该可以完成这项工作:
vals = [dict[tensor1[k]] for k in range(tensor1.get_shape().as_list()[0])]
tensor2 = tf.stack(vals, axis=0)
如果您有未知的尺寸,它会变得更加复杂。例如,如果 tensor1 的形状未知,我看不到不涉及 tf.while_loop 的解决方案。