2017-04-05 14 views
2

Ich habe eine Reihe von Bildern als Tensor der Größe [batch_size, w, h].Wie mache ich ein Histogramm von Tensor-Spalten in Tensorflow

Ich möchte ein Histogramm der Werte in jeder Spalte erhalten.

Das ist, was ich kam mit (aber nur für das erste Bild im Stapel funktioniert und es ist auch sehr langsam):

global_hist = [] 
net = tf.squeeze(net) 
for i in range(batch_size): 
    for j in range(1024): 
     hist = tf.histogram_fixed_width(tf.slice(net,[i,0,j],[1,1024,1]), [0.0, 0.2, 0.4, 0.6, 0.8, 1.0], nbins=10) 
     global_hist[i].append(hist) 

Gibt es einen effizienten Weg, dies zu tun?

Antwort

0

ok, also habe ich eine Lösung gefunden (obwohl es ziemlich langsam ist und nicht erlaubt, die Bins Kanten zu reparieren), aber jemand kann dies nützlich finden.

nbins=10 
net = tf.squeeze(net) 
for i in range(batch_size): 
    local_hist = tf.expand_dims(tf.histogram_fixed_width(tf.slice(net,[i,0,0],[1,1024,1]), [0.0, 1.0], nbins=nbins, dtype=tf.float32),[-1]) 
    for j in range(1,1024): 
     hist = tf.histogram_fixed_width(tf.slice(net,[i,0,j],[1,1024,1]), [0.0, 1.0], nbins=nbins, dtype=tf.float32) 
     hist = tf.expand_dims(hist,[-1]) 
     local_hist = tf.concat(1, [local_hist, hist]) 
    if i==0: 
     global_hist = tf.expand_dims(local_hist, [0]) 
    else: 
     global_hist = tf.concat(0, [global_hist, tf.expand_dims(local_hist,[0])]) 

Außerdem fand ich diesen Link sehr nützlich sein https://stackoverflow.com/questions/41764199/row-wise-histogram/41768777#41768777

Verwandte Themen