2017-04-19 44 views
0

我想在Tensorflow中有效地實現矩陣元素多樣性的概念,使得它可以在每次迭代的神經網絡訓練中執行。更精確地,在Tensorflow中計算大範圍矩陣的計數(或譜)

  • 輸入:一個大的矩陣,整數H x L[0,2^K)其中K是大的A
  • 輸出:整數的向量或矩陣的譜,s的大小爲H*L + 1其中s[i]表示重複i次的[0, 2^K)中的整數。
  • 計算考慮因素:H x L = 32*400K = 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形式爲中等大小的K變得計算上不可行並可能遇到內存不足的問題。在Tensorflow中有更有效的方法嗎?

回答

0

如果您在矩陣上調用一次bincount,您將獲得一個向量,其中在位置i上您具有元素i的數量。然後,如果你打電話給bincount,你會得到一個向量,在c位置你有一些有c個元素的元素,這就是我想要的。