2017-01-24 5 views
1

Ich bin this tutorial zu Matlab zu ändern, wo ich versuche, zu 1/0 Klasse zu klassifizieren. Jeder meiner Datenpunkte x hat die Dimension 30, dh es hat 30 Funktionen. Das ist meine erste NN.Normalisierung der Daten vor der Aktivierung

Mein Problem ist, wenn ich versuche, a1=np.tanh(z1) zu berechnen oder in Matlab a1 = tanh(z1); Ich erhalte entweder 1 oder -1 Werte seit | z1 |> 2.

  • Sollte ich die Werte normalisieren?
  • Gibt es irgendwelche Versprechungen, die ich in der Anleitung verpasst habe, um innerhalb des Bereichs -2 < z1 < 2 zu bleiben?
  • Bin ich richtig in der Annahme, es ist ein Problem, außerhalb der Grenzen?

Antwort

3

Eingabewerte sollten immer normalisiert werden, normalerweise im Bereich [0, 1]. Das Netzwerk könnte sonst nicht trainieren.

Eine andere Sache, die erwähnenswert ist, ist, dass Sie tanh als Aktivierung verwenden, und diese Funktion sättigt an den Extremen, was null Gradient bedeutet. Andere Aktivierungsfunktionen wie die ReLU (max (0, x)) haben dieses Problem nicht. Es ist ein Versuch Wert.

+0

... weshalb Sie diese Form f (x) = 1,7159 * tanh (2/3x) verwenden sollten, die max ihrer zweiten Ableitung bei +1 und -1 hat, um Sättigungsprobleme zu vermeiden (angenommen normalisierte Eingabe). –

+0

Ich werde sowohl als Sigmoid versuchen. – havakok

+0

In welchem ​​Punkt sollte ich normalisieren? sollte ich 'X' oder' z1' normalisieren? – havakok

Verwandte Themen