Что делают блоки и слои в нейронной сети?

#keras #deep-learning

#keras #глубокое обучение

Вопрос:

 model = keras.Sequential([
    # the hidden ReLU layers
    layers.Dense(units=4, activation='relu', input_shape=[2]),
    layers.Dense(units=3, activation='relu'),
    # the linear output layer 
    layers.Dense(units=1),
])
 

Выше приведен пример последовательной модели Keras из Kaggle. У меня проблема с пониманием этих двух вещей.

  1. Являются ли единицы количеством узлов в скрытом слое? Я вижу, что некоторые люди ставят 250 или что-то еще. Что делает число, когда оно изменяется в большую или меньшую сторону?
  2. Зачем нужно добавлять еще один скрытый слой? Что на самом деле делает данные, чтобы добавлять все больше и больше слоев?

Ответ №1:

Ответы вкратце

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

поиграйте с игровой площадкой tensorflow, это даст отличную идею, когда вы меняете слои и нейроны.