Я использую набор инструментов нейронной сети 2012a в своем проекте. Я создал сеть прямой связи с двумя слоями (входные данные не учитываются как слой, как принято в руководстве пользователя), и я хочу обновить некоторые из входных весов (IW{1,1}), сохраняя при этом другие фиксированные входные веса в IW{1,1} и веса от первого до второго слоя (LW{2,1}). Короче говоря, я хочу изменить подмножество IW{1,1}, оставив все остальные веса фиксированными. Позвольте мне назвать это моей оптимальной целью.

Если оптимальная цель невозможна, допустима и субоптимальная цель. То есть обновить весь IW{1,1} и оставить весь LW{2,1} исправленным.

Я уже понял, как достичь субоптимальной цели. Мое решение состоит в том, чтобы использовать команду «адаптировать» и установить скорость обучения на 0 для LW{2,1}. Но мне не нравится это решение, поскольку «адаптировать» — это слишком упрощенная функция, в которой отсутствуют параметры и функции (например, min-grad, plotperform и т. д.) других функций/алгоритмов обучения (например, trainlm, traingd и т. д.). Поэтому сложнее контролировать тренировочный процесс и проверять результаты.

Итак, во-первых, я хочу знать, есть ли способ достичь оптимальной цели, а не неоптимальной.

Во-вторых, если оптимальная цель невозможна (кроме создания всего с нуля), мне интересно, смогу ли я достичь субоптимальной цели, воспользовавшись некоторыми функциями обучения вместо использования «adpat». Я уже просмотрел «trainlm» и «traingd», но не думаю, что они полезны для какой-либо из моих целей.

Я буду очень признателен, если кто-нибудь может помочь мне с этой проблемой.

ОТВЕЧАТЬ

Matlabsolutions.com предоставляет последнюю Помощь по домашним заданиям MatLab, Помощь по заданию MatLab для студентов, инженеров и исследователей в различных отраслях, таких как ECE, EEE, CSE, Mechanical, Civil со 100% выходом. Код Matlab для BE, B.Tech , ME, M.Tech, к.т.н. Ученые со 100% конфиденциальностью гарантированы. Получите проекты MATLAB с исходным кодом для обучения и исследований.

Во-первых, позвольте мне пояснить ход моих мыслей. Я сравнивал непрерывное обучение с использованием net.trainParam.epochs = 100 с обучением 10 раз подряд в цикле с использованием net.trainParam.epochs = 10 (или, скажем, 100 последовательных раз в цикле с использованием net.trainParam.epochs = 1). Чтобы избежать осложнений, не тренируйтесь с проверочным набором. Например, обучайте кандидатов, используя net.divideFcn = ‘’. Затем используйте проверочный набор, чтобы выбрать лучший дизайн.

Есть способ получить тот же результат (я почти уверен, что сделал это много лет назад с версией NEWFF для MATLAB 6.5 2004 года). Учитывая те же начальные веса в эпоху 0, результаты будут такими же в эпоху 10. Однако, когда второй пример начинает 11-ю эпоху, он должен снова вызвать TRAIN. Когда TRAIN запускается снова, он не находится в том же состоянии, в котором он был бы в 11-й эпохе примера непрерывного обучения.

Затем задача состоит в том, чтобы количественно определить состояние TRAIN в конце эпохи 10 и гарантировать, что он находится в этом состоянии после его вызова в начале эпохи 11.

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

СМОТРИТЕ ПОЛНЫЙ ОТВЕТ НАЖМИТЕ НА ССЫЛКУ

https://www.matlabsolutions.com/resources/how-to-change-a-subset-of-ann-weights-while-keep-others-weights-unchanged-.php