#matlab #neural-network #weighted
#matlab #нейронная сеть #взвешенный
Вопрос:
На самом деле я обучаю ANN в MATLAB для оптимизации pump. У меня есть 2000 выборок в качестве входных данных для проектирования насоса и в качестве выходных данных для эффективности. Я получил несколько хороших результатов, но теперь я хочу переобучить модель. Я хочу изменить вес для каждой выборки таким образом, чтобы выборки с лучшей эффективностью имели больший вес, чем с малой эффективностью.
Как я могу взвесить свои выборки по эффективности?
Вот фрагмент моего кода:
Mdl_NN1 = fitnet([6 4],training);
Mdl_NN1.layers{2}.transferFcn = 'purelin';
Mdl_NN1.divideParam.trainRatio = 70/100;
Mdl_NN1.divideParam.valRatio = 15/100;
Mdl_NN1.divideParam.testRatio = 15/100;
Mdl_NN1.trainParam.showWindow = true;
[Mdl_NN1,TR] = train(Mdl_NN1,XtrainSet',YtrainSet(:,2)')
Xtrainset
Это конструкция насоса по 6 параметрам, а YtrainSet
это просто эффективность.
Комментарии:
1. Почему вы сделали это редактирование? Заголовок должен быть, ну, в заголовке, нет необходимости повторять его в теле.
Xtrainset
является переменной и, следовательно, соответствует встроенному форматированию кода, как оно есть в настоящее время. Пожалуйста, не удаляйте соответствующее форматирование из ваших сообщений.
Ответ №1:
Все дело в контроле ваших данных (это относится, в частности, к NNS). Итак, если вы хотите взвесить определенные выборки больше, чем другие, продублируйте их для обучения и удалите другие, которые являются неправильными / false. Это лучше, чем возиться с весами или изменять части подготовки / тестирования / валидации.
Одно предупреждение: если вы дублируете данные, убедитесь, что они отображаются только в обучающем наборе. Вы получите ненадежную точность, если будете рассматривать одни и те же примеры для обучения и тестирования. Поэтому вам может потребоваться явно задать данные для обучения / тестирования / проверки. Посмотрите на разделение данных для оптимального обучения нейронной сети в документах.
Mdl_NN1.divideFcn = 'divideind';
Mdl_NN1.divideParam.trainInd = % vector with indices
Mdl_NN1.divideParam.testInd = % vector with indices
Mdl_NN1.divideParam.valInd = % vector with indices
или может быть достаточным, чтобы установить, правильно ли упорядочены данные
Mdl_NN1.divideFcn = 'divideblock';