как я смогу выбрать правильные параметры и структуру нейронных сетей на этапе обучения?

#python #tensorflow #deep-learning #neural-network

#python #tensorflow #глубокое обучение #нейронная сеть

Вопрос:

Я пытаюсь обучить нейронную сеть в контролируемом обучении, которое имеет в качестве входных данных x_train список из 100 списков, каждый из которых содержит 2000 столбцов ……. и целевой вывод y_train , который также содержит список из 100 списков, но содержит каждый столбец 20.

Вот так x_train и y_train выглядят:

введите описание изображения здесь

вот нейронные сети, которые я создал :

 dnnmodel = tf.keras.models.Sequential()
dnnmodel.add(tf.keras.layers.Dense(40, input_dim = len(id2word), activation='relu'))
dnnmodel.add(tf.keras.layers.Dense(20, activation='relu'))
dnnmodel. compile ( loss = tf.keras.losses.MeanSquaredLogarithmicError(), optimizer = 'adam' , metrics = [ 'accuracy' ]) 
  

на этапе обучения я не могу выбрать правильное количество нейронов, слоев и функций активации и потерь, поскольку значения точности и потерь совсем не разумны . …. кто-нибудь может мне помочь, пожалуйста?

Вот отображение после выполнения:

введите описание изображения здесь

Ответ №1:

Не существует правильного метода или формулы для определения правильного количества слоев или нейронов или любых других функций, которые вы используете в своей модели. Все сводится к экспериментам и тому, что лучше всего подходит для ваших данных и проблемы, которую вы пытаетесь решить.

Вот несколько советов:
sigmoid, tanh = Эти активации обычно не используются в скрытых слоях, поскольку их вычисленные наклоны или градиент очень малы. Таким образом, для сходимости модели может потребоваться много времени.

Relu, elu, leaky relu — Эти активации могут использоваться в скрытых слоях, поскольку они имеют крутой наклон по сравнению с другими, поэтому процесс обучения происходит быстро. Обычно используется Relu.

Layers : Чем больше слоев вы добавляете, тем глубже вы делаете свою нейронную сеть. Более глубокие нейронные сети способны изучать сложные функции ваших данных, но они склонны к переоснащению. Кроме того, глубокая нейронная сеть страдает от таких проблем, как исчезающий градиент или взрывающиеся градиенты. Меньшее количество слоев означает меньшее количество параметров для изучения и склонность к недостаточной подгонке.

Loss Function — Функция потерь зависит от проблемы, которую вы пытаетесь решить.
Для классификации
Если y_label является категориальным, выберите categorical_cross_entropy
Если y_label является дискретным, выберите sparse_categorical_cross_entropy
Для задач регрессии
Используйте Rmse или MSE

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

Комментарии:

1. Пожалуйста, не могли бы вы принять ответ и поддержать его, если он сработал.