我想在Tensorflow中有效地实现矩阵元素多样性的概念,以便可以在神经网络训练的每次迭代中执行。更准确地说,
A
整数H x L
,其范围为[0,2^K)
,其中K
很大。s
,大小为H*L + 1
,其中s[i]
表示[0, 2^K)
中重复的整数数{{ 1}}次。i
和H x L = 32*400
。这个过程需要在神经网络的每次迭代中运行。示例:
K = 16
天真的方法
A = [[0,0,0,1,1,2,2],
[3,4,4,4,4,5,6]]
K = 3
s = [1,2,2,1,1,0,0,0,0,0,0,0,0,0,0]
不幸的是,这种方法的主要问题是,对于中等大小的I = tf.one_hot(A) #Shape: H x L x 2^K
y = tf.reduce_sum(tf.reduce_sum(I,0),1) # Shape: 2^K
s = tf.bincount(y, minLength = H*L + 1) # Shape: H*L + 1
,扩展为one_hot形式在计算上是不可行的,并且也可能遇到内存不足的问题。在Tensorflow中有更有效的方法吗?
答案 0 :(得分:0)
如果你在矩阵上调用一次bincount,你将获得一个向量,其中在位置i你有元素i的计数。然后,如果你打电话给bincount,那么你将有一个向量,在位置c你有数量c的元素,这就是我想你想要的。