1
Ich benutze Keras Backend, um eine benutzerdefinierte Metrik zu erstellen. Der erste Schritt ist ein proba Tensor (Ausgabe von softmax) auf kategorische Daten zu konvertieren zB:keras Backend Proba zu kategorial
from keras import backend as K
y_pred = K.variable([[0.7, 0.2, 0.1],[0.2, 0.8, 0],[0.2,0.2,0.6],[0.9,0.05,0.05]])
K.eval(y_pred)
Gibt
array([[ 0.69999999, 0.2 , 0.1 ],
[ 0.2 , 0.80000001, 0. ],
[ 0.2 , 0.2 , 0.60000002],
[ 0.89999998, 0.05 , 0.05 ]], dtype=float32)
Ich möchte bekommen:
array([[ 1, 0, 0],
[ 0, 1, 0],
[ 0, 0, 1],
[ 1, 0, 0]], dtype=float32)
gefunden die K.argmax-Funktion, aber ich weiß nicht, wie ich sie verwenden kann, um Werte in meinem Tensor zu ersetzen.
max_index = K.cast(K.argmax(y_pred, 1), "int32")
lol_index = K.arange(y_pred.shape[0], dtype="int32")
y_pred[index, max_index]
gibt:
ValueError: Shape must be rank 1 but is rank 2 for 'strided_slice_32' (op: 'StridedSlice') with input shapes: [4,3], [2,4], [2,4], [2].
ähnlicher Thread hier: https://stackoverflow.com/questions/44553722/restricting- the-output-values-of-layers-in-keras/44554112 # 44554112 – petezurich
Dies wurde beantwortet, wenn auch für ein anderes Problem, hier: https://StackOverflow.com/a/20295159/4895899 –
Ich spreche über keras Backend, es ist nicht dasselbe wie numpig. –