beckstev / MachineLearningSeminar

MachineLearningSeminar SS19 TU Dortmund
MIT License
0 stars 0 forks source link

Failure of loading saved models with custom layers/activation_functions #24

Closed FeGeyer closed 5 years ago

FeGeyer commented 5 years ago

Wenn wir ein Netzwerk nutzen, welches deine selbstgeschriebene Klasse PRELU nutzt, dann gibt es beim ausführen der predict-Methode in evaluate_training ein Problem bei model.load: ValueError: Unknown layer: PRELU. Dieses Problem ist bekannt, siehe, was sich laut diesem Issue auch auf Custom Layer übertragen lässt. Beim Implementieren der Lösung ergab sich das Problem, dass genetic_utils nicht importiert werden kann, siehe hier. Die Lösung dieses Problems bedingt allerdings eine komplette und restlose Deinstallation von alten Keras Versionen, um eine neue installieren zu können.

FeGeyer commented 5 years ago

Ich werde mal einen neuen Branch und eine neue virtualenv aufmachen, um ein bisschen rumzuprobieren. Das fixen der Confusion Matrix habe ich mit DogNN getestet, da hier kein PRELU verwendet wird.

FeGeyer commented 5 years ago

Update: Es ist keine Neuinstallation von keras notwendig. Unsere Installationen von Keras decken das ab, das Modul wurde falschgeschrieben. Richtig wäre from keras.utils.generic_utils import CustomObjectScope, dann funktioniert das importieren. Der eigentliche Fehler ist noch nicht behoben.

FeGeyer commented 5 years ago

siehe #26

beckstev commented 5 years ago

Mit https://github.com/beckstev/MachineLearningSeminar/pull/26 behoben?

Der eigentliche Fehler ist noch nicht behoben.

FeGeyer commented 5 years ago

Achso, sry, das war nicht eindeutig. Ja der eigentliche Fehler war, dass er bei model.load einen Fehler in Bezug auf PReLU geworfen hat. Und das wurde durch #26 behoben.

beckstev commented 5 years ago

I also added the with CustomObjectScope({'PRELU': PReLU()}): to model loader, which loads the checkpoint model.

beckstev commented 5 years ago

Good job!