Python 张量流中大范围矩阵的单元数(或谱)计算

Python 张量流中大范围矩阵的单元数(或谱)计算,python,tensorflow,Python,Tensorflow,我想在Tensorflow中有效地实现矩阵元素多样性的概念,这样它可以在神经网络训练的每次迭代中执行。更准确地说, 输入:一个大矩阵,A的整数H x L范围为[0,2^K),其中K较大 输出:一个整数向量或矩阵的谱,s大小H*L+1,其中s[i]表示[0,2^K)中重复i次的整数数 计算注意事项:hl=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,

我想在Tensorflow中有效地实现矩阵元素多样性的概念,这样它可以在神经网络训练的每次迭代中执行。更准确地说,

  • 输入:一个大矩阵,
    A
    的整数
    H x L
    范围为
    [0,2^K)
    ,其中
    K
    较大
  • 输出:一个整数向量或矩阵的谱,
    s
    大小
    H*L+1
    ,其中
    s[i]
    表示
    [0,2^K)
    中重复
    i
    次的整数数
  • 计算注意事项:
    hl=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

不幸的是,这种方法的主要问题是,对于中等大小的
K
扩展到一个热的形式在计算上变得不可行,并且可能会遇到内存不足的问题。在Tensorflow中有没有更有效的方法来做到这一点?

如果在矩阵上调用一次bincount,您将得到一个向量,其中正你有元素i的计数,然后,如果你调用bincount,你会有一个向量,在位置c,你有元素的数量,有计数c,这就是我想你想要的