2017-03-28 4 views
0

Ich möchte eine benutzerdefinierte Verlustfunktion in Keras mit der Vorhersage eines anderen Netzwerks implementieren. Genauer gesagt möchte ich die vom Diskriminator erzeugte Vorhersage in der Verlustfunktion für den Generator verwenden. Allerdings, wenn ich versuche, dies zu implementieren, bekomme ich folgende Fehlermeldung:Implementieren benutzerdefinierte Verlustfunktion in Keras für adversielle Verlust?

if len(array.shape) == 1: 
TypeError: object of type 'TensorVariable' has no len() 

Ist Keras der Lage, Netzwerk-Vorhersagen in benutzerdefinierten Verlustfunktionen zu haben? Danke!

Antwort

0

Um die Anzahl der Dimensionen eines Tensor verwenden K.ndim statt K.shape, zB zu erhalten:

import keras.backend as K` 

def myCustomLoss(x): 
    if K.ndim(x) == 3: 
     print("is 3") 

Beachten Sie, dass diese Werte als array sind nur Platzhalter für Daten, die einige Gerät auf liegt, zum Beispiel deine GPU. Daher funktionieren Dinge wie len(array) nicht, da das Backend diese Werte zuerst holen müsste und dies nicht automatisch, weil das ineffizient wäre.

Verwandte Themen