Ich versuche, eine Lambda-Schicht zu implementieren, die eine benutzerdefinierte Verlustfunktion erzeugt. In der Schicht muss ich in der Lage sein, jedes Element in einer Charge mit jedem anderen Element in der Charge zu vergleichen, um die Kosten zu berechnen. Idealerweise mag ich Code, der etwa wie folgt aussieht:Keras Lambda Layer für benutzerdefinierten Verlust
for el_1 in zip(y_pred, y_true):
for el_2 in zip(y_pred, y_true):
if el_1[1] == el_2[1]:
# Perform a calculation
else:
# Perform a different calculation
Als ich dies wahr ist, erhalte ich:
TypeError: TensorType does not support iteration.
I Keras Version 2.0.2 mit einem Theano Version 0.9.0 Backend verwenden. Ich verstehe, dass ich Keras-Tensor-Funktionen verwenden muss, um dies zu tun, aber ich kann keine Tensorfunktionen herausfinden, die tun, was ich will.
Auch habe ich Schwierigkeiten zu verstehen, genau was meine Lambda-Funktion zurückgeben sollte. Ist es ein Tensor der Gesamtkosten für jede Probe oder sind es nur Gesamtkosten für die Charge?
Ich habe seit Tagen meinen Kopf dagegen geschlagen. Jede Hilfe wird sehr geschätzt.
Okay, mit Keras Callbacks, ich bestimmte, was der Lambda zurückgeben soll - ein Skalar pro Batch. Ich kann jedoch immer noch nicht herausfinden, wie man während des Trainings über Tensoren iteriert. Ich denke, es könnte mit dem Schneiden zu tun haben ... – gaw89
Haben Sie meine Antwort gelesen? – nemo
Sorry, über das Wochenende gegangen. Nur akzeptiert. Danke vielmals! – gaw89