0

Я пытаюсь написать класс нейронной сети, но я не совсем понимаю некоторые аспекты этого. У меня есть два вопроса о проекте.Neural Network Developing

I have developed Neural Netowrk Design like this

  1. Могу ли я сделать это правильно? Нужно ли подключать нейрон для смещения ко всем нейронам (кроме тех, которые находятся во входном слое), или только к скрытому слою?

  2. Мой второй вопрос заключается в вычислении выходного значения. Я использую уравнение ниже для вычисления выходного значения нейронов.

    HiddenLayerFirstNeuron.Value = 
    (input1.Value * weight) + (input2.Value * weight) + (Bias.Value * weight) 
    

    После этого уравнения, я рассчитываю активацию, и результат посылает результат. И выход нейронов делает то же самое.

Я не уверен, что я делаю, и я хочу устранить проблемы.

ответ

0

Посмотрите на: http://deeplearning.net/tutorial/contents.html в theano. Это объясняет все, что вам нужно знать для многослойного персептрона с использованием anano (символическая математическая библиотека).

0
  1. Уклон обычно связан со всеми скрытыми и выходными устройствами.
  2. Да, вы вычисляете ввод функции активации, например, суммирование веса * вывода предыдущего нейронного слоя.

Успехи с развитием;)

+0

Извините, но я прошу уточнить; Я должен использовать функцию активации для всех устройств, кроме входных блоков? –

+0

Да. Я когда-то использовал функцию активации (сигмоида) на входных модулях, а сеть хорошо работала, но выходы блоков вывода были низкими, поскольку нормализованные данные были нормализованы снова из-за активации функции входных блоков. – viceriel

0
  1. Там должны быть отдельным нейрон смещения для каждого скрытого и выходного слоя. Подумайте о слоях как функции, примененной к полиномам первого порядка, таким как f(m*x+b)=y, где y - ваш выход, а f(x) - ваша функция активации. Если вы посмотрите на линейный термин, вы узнаете b. Это представляет собой смещение и ведет себя аналогично нейронной сети, как при таком упрощении: она сдвигает гиперплоскость вверх и вниз по пространству. Имейте в виду, что у вас будет одно смещение на один слой, связанный со всеми нейронами этого слоя f((wi*xi+b)+...+(wn*xn+b)) с начальным значением 1. Когда дело доходит до градиентного спуска, вам придется тренировать этот нейрон, как обычный вес.

  2. На мой взгляд, следует также применить функцию активации к выходному слою. Так обычно делается с многослойными персептронами. Но это зависит от того, что вы хотите. Если вы, например, используете логистическую функцию как функцию активации, и хотите получить выход в интервале (0,1), тогда вам также необходимо применить свою функцию активации к выходу. Поскольку базовая линейная комбинация, как и в вашем примере, теоретически может выйти за границы ранее упомянутого Intervall.