Предскажите, что ответы Используя RegressionNeuralNetwork предсказывают блок

В этом примере показано, как использовать блок RegressionNeuralNetwork Predict для предсказания ответа в Simulink®. Блок принимает наблюдение (данные о предикторе) и возвращает предсказанный ответ для наблюдения с помощью обученной модели регрессии нейронной сети.

Обучите модель регрессии

Загрузите cereal набор данных. Создайте предиктор X как числовая матрица, которая содержит 6 функций 77 наблюдений. Создайте ответ Y как числовой вектор, который содержит калории для каждых хлопьев.

load cereal
X = [Carbo Cups Fat Fiber Protein Sugars];
Y = Calories;

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

rng("default") % For reproducibility of the partition
cv = cvpartition(length(Y),"Holdout",0.20);

Извлеките обучение и протестируйте индексы.

trainingInds = training(cv);
testInds = test(cv);

Задайте наборы тестовых данных и обучение.

XTrain = X(trainingInds,:);
YTrain = Y(trainingInds);
XTest = X(testInds,:);
YTest = Y(testInds);

Обучите модель регрессии нейронной сети путем передачи обучающих данных XTrain и YTrain к fitrnet функция. Задайте, чтобы стандартизировать числовые предикторы.

nnetMdl = fitrnet(XTrain,YTrain,"Standardize",true)
nnetMdl = 
  RegressionNeuralNetwork
             ResponseName: 'Y'
    CategoricalPredictors: []
        ResponseTransform: 'none'
          NumObservations: 62
               LayerSizes: 10
              Activations: 'relu'
    OutputLayerActivation: 'linear'
                   Solver: 'LBFGS'
          ConvergenceInfo: [1x1 struct]
          TrainingHistory: [704x7 table]


  Properties, Methods

nnetMdl RegressionNeuralNetwork модель. Можно использовать запись через точку, чтобы получить доступ к свойствам nnetMdl. Например, можно задать nnetMdl.TrainingHistory получить больше информации об учебной истории модели нейронной сети.

Создайте модель Simulink

Этот пример предоставляет модели Simulink slexRegressionNeuralNetworkPredictExample.slx, который включает блок RegressionNeuralNetwork Predict. Можно открыть модель Simulink или создать новую модель как описано в этом разделе.

Открытая предоставленная модель

Откройте модель Simulink slexRegressionNeuralNetworkPredictExample.slx.

SimMdlName = 'slexRegressionNeuralNetworkPredictExample'; 
open_system(SimMdlName)

PreLoadFcn функция обратного вызова slexRegressionNeuralNetworkPredictExample включает код, чтобы загрузить выборочные данные, обучить модель нейронной сети и создать входной сигнал для модели Simulink. Если вы открываете модель Simulink, программное обеспечение запускает код в PreLoadFcn прежде, чем загрузить модель Simulink. Чтобы просмотреть функцию обратного вызова, в разделе Setup по вкладке Modeling, нажимают Model Settings и выбирают Model Properties. Затем на вкладке Callbacks выберите PreLoadFcn функция обратного вызова в панели коллбэков Модели.

Создайте новую модель

Вместо того, чтобы открыть модель, если, можно создать новую модель. Чтобы создать новую модель Simulink, откройте шаблон Blank Model и добавьте блок RegressionNeuralNetwork Predict. Добавьте блоки Inport и Outport и соедините их с блоком RegressionNeuralNetwork Predict.

Дважды кликните блок RegressionNeuralNetwork Predict, чтобы открыть диалоговое окно Block Parameters. Можно задать имя переменной рабочей области, которая содержит обученную модель нейронной сети. Именем переменной по умолчанию является nnetMdl. Нажмите Кнопку Обновить. Раздел Trained Machine Learning Model диалогового окна отображается, опции раньше обучали модель nnetMdl.

Блок RegressionNeuralNetwork Predict ожидает наблюдение, содержащее 6 значений предиктора. Дважды кликните Inport блок и установите размерности Порта на 6 на вкладке Signal Attributes.

Создайте входной сигнал в форме массива структур для модели Simulink. Массив структур должен содержать эти поля:

  • time — Моменты времени, в которых наблюдения вводят модель. Ориентация должна соответствовать наблюдениям в данных о предикторе. В этом примере, time должен быть вектор-столбец.

  • signals — Массив структур 1 на 1, описывающий входные данные и содержащий поля values и dimensions, где values матрица данных о предикторе и dimensions количество переменных предикторов.

Создайте соответствующий массив структур для будущих предсказаний.

cerealInput.time = (0:length(YTest)-1)';
cerealInput.signals(1).values = XTest;
cerealInput.signals(1).dimensions = size(XTest,2);

Импортируйте данные сигнала из рабочей области:

  • Откройте диалоговое окно Configuration Parameters. На вкладке Modeling нажмите Model Settings.

  • В панели Импорта/Экспорта Данных установите флажок Input и введите cerealInput в смежном текстовом поле.

  • В панели Решателя, под Временем симуляции, Временем остановки набора к cerealInput.time(end). При выборе Решателя, Типе набора к Fixed-step, и Решатель набора к discrete (no continuous states).

Для получения дополнительной информации смотрите Данные сигнала Загрузки для Симуляции (Simulink).

Модель симулируется

Симулируйте модель.

sim(SimMdlName);

Когда Inport блок обнаруживает наблюдение, он помещает наблюдение в блок RegressionNeuralNetwork Predict. Можно использовать Инспектора Данных моделирования (Simulink), чтобы просмотреть записанные данные блока Outport.

Смотрите также

Похожие темы