2017-01-24 16 views
1

Я изменяю this tutorial в Matlab, где я пытаюсь классифицировать класс 1/0. каждый из моих данных x имеет размерность 30, то есть имеет 30 функций. Это мой первый NN.Нормализация данных до активации функции

Моя проблема в том, когда я пытаюсь вычислить a1=np.tanh(z1) или в MATLAB a1 = tanh(z1); Я получаю либо 1 или -1 значения, так как | z1 |> 2.

  • Должен ли я нормализовать значения?
  • Есть ли какие-либо обещания, которые я пропустил в учебнике, чтобы остаться в пределах 2 < z1 < 2 диапазона?
  • Правильно ли я предполагаю, что это проблема, выходящая за границы?

ответ

3

Входные значения всегда должны быть нормализованы, как правило, в диапазон [0, 1]. Сеть может не работать иначе.

Еще одна вещь, которую стоит отметить, заключается в том, что вы используете tanh как активацию, и эта функция насыщается в крайних точках, что означает нулевой градиент. Другие функции активации, такие как ReLU (max (0, x)), не имеют этой проблемы. Это стоит попробовать.

+0

... поэтому вы можете использовать эту форму f (x) = 1.7159 * tanh (2/3x), которая имеет максимум своих вторых производных в +1 и -1, чтобы избежать проблемы насыщения (при условии, что нормированный вход). –

+0

Я попробую как сигмовидную, так и синюю. – havakok

+0

В какой момент я должен нормализовать? должен ли я нормализовать 'X' или' z1'? – havakok