Je tente d'implémenter une couche Lambda qui produira une fonction de perte personnalisée. Dans la couche, je dois être capable de comparer chaque élément d'un lot à tous les autres éléments du lot afin de calculer le coût. Idéalement, je veux un code qui ressemble à ceci:Couche Lambda Keras pour perte personnalisée
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
Quand je vrai, je reçois:
TypeError: TensorType does not support iteration.
J'utilise la version 2.0.2 Keras avec une version 0.9.0 Théano back-end. Je comprends que j'ai besoin d'utiliser les fonctions de tenseurs de Keras pour faire cela, mais je ne peux pas trouver de fonctions de tenseurs qui font ce que je veux.
En outre, j'ai de la difficulté à comprendre précisément quelle devrait être ma fonction Lambda. Est-ce un tenseur du coût total pour chaque échantillon, ou est-ce juste un coût total pour le lot?
Je me bats la tête depuis des jours. Toute aide est très appréciée.
Bon, en utilisant Keras callbacks, j'ai déterminé ce que le Lambda est censé renvoyer - un scalaire par lot. Cependant, je n'arrive toujours pas à comprendre comment itérer sur les tenseurs pendant l'entraînement. Je pense que cela pourrait avoir à voir avec le découpage en tranches ... – gaw89
Avez-vous lu ma réponse? – nemo
Désolé, passé le week-end. Juste accepté. Merci beaucoup! – gaw89