Dies ist eine eher konzeptionelle Frage, aber ich muss gestehen, dass ich mich schon eine Weile damit beschäftige.Wie Wiederherstellen der ursprünglichen Werte nach einem Modell in Keras vorhersagen?
Angenommen, Sie möchten ein neurales Netzwerk (NN) trainieren, indem Sie beispielsweise keras verwenden. Wie ist es empfehlenswert, führen Sie vor der eine Normalisierung oder Standardisierung der Daten Ausbildung, so zum Beispiel mit einer Standardisierung:
x_new = (x_old - mean)/standarddev
Dann tragen Sie sich auf die Ausbildung (model.fit
in keras) und den Verlust minimieren Funktion, alles sehr nett.
Bearbeiten: In meinem Fall habe ich eine Reihe von Werten zwischen 200 und 400. Es ist ein NN mit 1 Eingang, 1 Ausgang. Ich standardisiere wie gesagt, die Eingabewerte UND die erwarteten Werte, so dass die NN die Gewichte und Voreingenommenheiten in einer standardisierten Weise lernt.
Stellen Sie sich nun vor, dass ich einen komplett neuen Datensatz mit Werten zwischen 200 und 400 habe und eine Ausgabe mit dem NN mit dem vorherigen Training vorhersagen möchte. Sie können model.predict(x)
in Keras verwenden, mit x
die völlig neue Reihe von Werten, die ich erhalten habe, standardisiert (oder normalisiert), weil Ihr NN auf diese Weise trainiert wurde. Aber dann, was ich bekomme, nach der predict
ist ein Array von Werten standardisiert, , aber ich möchte sie auf den üblichen Bereich von 200 bis 400 zuordnen. Und ich weiß nicht, wie ich das machen soll.
Ich weiß, dass Sie das Training ohne Normalisierung oder Standardisierung fortsetzen können, aber ich habe gelesen, dass wenn Sie standardisieren (oder normalisieren), mit Werten im Bereich der Ausgabe der Einheiten (Neuronen) (zum Beispiel zwischen 0 und 1 für ein Sigmoid), verbessert sich das Training.
Vielen Dank.
Ok - lassen Sie uns überprüfen, ob ich verstanden habe: Sie haben Ihre Daten, die Sie in neuronales Netzwerk eingeben, in einer normalisierten Form - und Sie möchten die ursprünglichen Werte wiederherstellen? Oder möchten Sie Ihre Ausgabe destandarisieren? Und - übrigens. Was ist die Ausgabe Ihrer Funktion? Irgendein Code könnte nützlich sein. –
Ja, ich habe ein 'x' Array von Eingängen und ein' y' Array von Ausgängen mit Werten zwischen 200 und 400. Sie sind beide normalisiert und das Training durchgeführt. Danach habe ich ein neues Array, 'x_2', mit Werten zwischen 200 und 400, und ich möchte ein Ergebnis mit 'vorhergesagt' in Keras vorhersagen. Das Problem ist, dass die NN normal trainiert wurden. Wenn ich dieses neue Array 'x_2' normalisiere, nenne ich es,' y_2' ist normalisiert, und was ich will, ist _denormalize_, um Werte zwischen 200 und 400 zu erhalten. – David