web-dev-qa-db-de.com

Ändern der Skala eines Tensors im Tensorflow

Tut mir leid, wenn ich den Titel durcheinander gebracht habe, ich wusste nicht, wie ich das ausdrücken soll. Ich habe jedenfalls einen Tensor aus einer Menge von Werten, aber ich möchte sicherstellen, dass jedes Element im Tensor einen Bereich von 0 - 255 hat (oder 0 - 1 funktioniert auch). Ich möchte jedoch nicht alle Werte wie Softmax auf 1 oder 255 addieren, sondern nur die Werte herunterskalieren.

Gibt es eine Möglichkeit, dies zu tun?

Vielen Dank!

9
agupta231

Sie versuchen, die Daten zu normalisieren. Eine klassische Normalisierungsformel lautet:

normalize_value = (value − min_value) / (max_value − min_value)

Die Implementierung für Tensorflow sieht folgendermaßen aus:

tensor = tf.div(
   tf.subtract(
      tensor, 
      tf.reduce_min(tensor)
   ), 
   tf.subtract(
      tf.reduce_max(tensor), 
      tf.reduce_min(tensor)
   )
)

Alle Werte des Tensors werden zwischen 0 und 1 liegen.

WICHTIG: Vergewissern Sie sich, dass der Tensor Float/Double-Werte hat oder der Ausgangstensor nur Nullen und Einsen hat. Wenn Sie einen ganzzahligen Tensor haben, rufen Sie zuerst diesen auf:

tensor = tf.to_float(tensor)
21
Will Glück

sigmoid(tensor) * 255 sollte es tun.

1
Albert

Entsprechend der Feature-Skalierung in Wikipedia können Sie auch die Skalierung auf Einheitslänge versuchen: 

 enter image description here

Es kann mit diesem Codesegment implementiert werden: 

In [3]: a = tf.constant([2.0, 4.0, 6.0, 1.0, 0])                                                                                                                                                                     
In [4]: b = a / tf.norm(a)
In [5]: b.eval()
Out[5]: array([ 0.26490647,  0.52981293,  0.79471946,  0.13245323,  0.        ], dtype=float32)
1
lerner