Многослойная нейронная сеть не предсказывает отрицательные значения

Это довольно популярно в эти дни, чтобы просто использовать число пересмотра Подрывной деятельности.

18
задан Cœur 26 April 2017 в 16:16
поделиться

1 ответ

Хотя на вопрос уже ответили, позвольте мне обмениваться своим опытом. Я пытался приблизить Синусоидальную функцию с помощью 1 - 4 - 1 нейронная сеть. т.е., enter image description here И подобный Вашему случаю, мне не разрешают использовать API высокого уровня как TensorFlow. Кроме того, я обязан использовать C++ по Python3! (BTW, я главным образом предпочитаю C++).

я использовал Сигмовидный активация и ее производная, определенная как:

double sigmoid(double x) 
{ 
   return 1.0f / (1.0f + exp(-x)); 
}

double Sigmoid_derivative(double x)
{
   return x * (1.0f - x);
}

И это - то, что я получил после 10 000 эпох , обучение сеть на [1 116] 20 Учебных Примеров . enter image description here

Как, Вы видите, сеть не чувствовала себя подобно отрицательной кривой. Так, я изменил функцию активации на [1 117] Tanh.

double tanh(double x)
{
   return (exp(x)-exp(-x))/(exp(x)+exp(-x));
}

double tanh_derivative(double x)
{
   return 1.0f - x*x ;
}

И удивительно, после половины эпох, (т.е. 5000 ), я получил намного лучшую кривую. enter image description here И все мы знаем, что это значительно изменит к лучшему использование более скрытых нейронов, больше эпох и лучше (и больше) учебный пример. Кроме того, перестановка данных важна также!

0
ответ дан 30 November 2019 в 09:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: