Angenommen habe ich die folgende Tensor t
als Ausgang einer softmax Funktion:Softmax-Matrix auf 0/1 (OneHot) codierte Matrix?
t = tf.constant(value=[[0.2,0.8], [0.6, 0.4]])
>> [ 0.2, 0.8]
[ 0.6, 0.4]
Nun würde ich diese Matrix t
in eine Matrix konvertieren möchten, die die OneHot codierte Matrix ähnelt:
Y.eval()
>> [ 0, 1]
[ 1, 0]
Ich bin vertraut mit c = tf.argmax(t)
, dass würde mir die Indizes pro Zeile t
, die 1 sein sollte. Aber von c
zu Y
zu gehen scheint recht schwierig.
Was ich schon versucht t
-tf.SparseTensor
Umwandlung c
und anschließend tf.sparse_tensor_to_dense()
Y
zu erhalten verwenden. Aber diese Umwandlung beinhaltet einige Schritte und scheint für die Aufgabe übertrieben zu sein - ich habe es noch nicht einmal vollständig abgeschlossen, aber ich bin mir sicher, dass es funktionieren kann.
Gibt es eine geeignetere/einfachere Möglichkeit, diese Konvertierung zu machen, die ich vermisse.
Der Grund, warum ich das brauche, ist, weil ich einen benutzerdefinierten OneHot-Encoder in Python habe, wo ich Y
füttern kann. tf.one_hot()
ist nicht umfangreich genug - erlaubt keine benutzerdefinierte Codierung.
Verwandte Fragen:
Das ist so offensichtlich! Fühle wirklich einen Depp, dass du das nicht früher gesehen hast. Und ich denke du hast Recht. Obwohl 'tf.one_hot()' eher zum Kategorisieren als zum Zuweisen von 1 zu Indizes gedacht ist, scheint es letzteres zu tun (von meinen begrenzten Tests), auch wenn die Tiefe angegeben ist. Vielen Dank! –