При выполнении узла "Нейросеть" возникает ошибка "Нейросеть не обучена".

0 голосов
Georgiy.Chirkov в категории Ошибки
Пробовал строить несколько видов нейронных сетей (классификация,регрессия) Но при выполнении узла, получаю уведомление "Нейросеть не обучена". Изменял настройки нейронной сети, но эффект тот же самый. С документаций по нейронным сетям уже ознакомился. Есть какое-то объяснение этому вопросу? Как исправить?

Ответы: 2 шт.

0 голосов
Georgiy.Chirkov
Это связано с тем, что перед выполнением, такие узлы как "Нейросеть (классификация)" и "Нейросеть (регрессия)" необходимо обучить. Это можно сделать после того, как Вы настроите узел и сохраните настройки. После этого нужно будет вызвать контекстное меню на узле (правая кнопка мыши на узле) и выбрать пункт "Переобучить узел". После этого узлы можно запускать как обычно.
Антон Андреевич Морозов
Да логику понял, выставил настройки, но теперь столкнулся с ошибкой "out of memory" Это из-за большого набора данных или что-то в настройках связано? Пробовал убирать валидацию, рестарты, регуляцию, не помогло. Изменял на более простую структуру.
alexey.arustamov
Если не хватает памяти, то помимо очевидного варианта решения - увеличить размер ОЗУ, есть и другой способ - использовать сэмплинг. Обучать нейросеть не на всем наборе данных, а на репрезентативном подмножестве. О сэмплинге читать тут - https://help.loginom.ru/userguide/processors/preprocessing/sampling.html.

После обучения можно через нейросеть прогнать все данные. Прогон данных через уже построенную нейросеть требует намного меньше ресурсов.
Антон Андреевич Морозов
Спасибо за советы. Очень помогло. Но хочу уточнить один момент. Очень странно обучается нейросеть. По транзакциям, которые я имею, есть товар. который всегда продается по 1-му разу. Но нейросеть прогнозирует 1, 2 или в лучшем случае три числа, которые странным образом распределяет между новыми данными. И для товара, описанного выше, ставит прогноз в 2. Подскажите что я делаю не так?
alexey.arustamov

Надо все-таки пройти обучение. Тогда таких вопросов не будет :)

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

Если в большинстве случаев лучший вариант прогноза например, 2, но иногда есть выбросы, то будет выбран ответ 2. Причина очень проста - в большинстве случаев это ближе к данным на которых сеть обучалась.

Антон Андреевич Морозов
Я проверял узлы и обнаружил, что значение, которое я вам называю является простым средним по столбцу, который я пытаюсь прогнозировать. Буду думать, спасибо за советы)
0 голосов
Georgiy.Chirkov

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

Один из вариантов такой реализации: у узла с обучением вызывается меню настройки и выбирается пункт "Настроить режим активации узла...". В этом пункте выбирается настройка "Собственный режим активации узла" => "Всегда переобучать".  Далее добавляется компонент "Выполнение узла" и настраивается на выполнение компонента с обучением. В настройках компонента "Выполнение узла" выбирается пункт  "Настроить режим активации узла...". => "Собственный режим активации узла" => "Всегда выполнять".

Подробнее о настройке режима активации узла можно почитать тут: https://help.loginom.ru/userguide/scenario/setting-batch-processing-mode.html

...