Динамические сети с обратной связью, такие как narxnet и narnet нейронные сети, могут быть преобразованы между режимами разомкнутого и замкнутого контура с функциями openloop и closeloop. Замкнутые сети делают многоступенчатые прогнозы. Другими словами, они продолжают предсказывать, когда отсутствует внешняя обратная связь, используя внутреннюю обратную связь.
Здесь нейронную сеть обучают моделировать магнитную систему левитации и моделируют в режиме разомкнутой петли по умолчанию.
[X,T] = maglev_dataset;
net = narxnet(1:2,1:2,10);
[x,xi,ai,t] = preparets(net,X,{},T);
net = train(net,x,t,xi,ai);
y = net(x,xi,ai);
view(net)

Нейронная сеть также может быть смоделирована только в замкнутой форме, так что, учитывая внешний входной ряд и начальные условия, нейронная сеть выполняет столько прогнозов, сколько входной ряд имеет временных шагов.
netc = closeloop(net); view(netc)

Здесь данные обучения используются для определения входных данных. xи начальное состояние задержки на входе и уровне, xi и ai, но они могут быть определены, чтобы сделать несколько прогнозов для любого входного ряда и начальных состояний.
[x,xi,ai,t] = preparets(netc,X,{},T);
yc = netc(x,xi,ai);Также может быть полезно смоделировать обученную нейронную сеть до настоящего времени со всеми известными значениями временного ряда в режиме с разомкнутым контуром, затем переключиться в режим с замкнутым контуром, чтобы продолжить моделирование для такого количества прогнозов в будущем, какое необходимо.
Точно так же, как openloop и closeloop может использоваться для преобразования между нейронными сетями с открытым и замкнутым контуром, они могут преобразовывать состояние сетей с открытым и замкнутым контуром. Вот полные интерфейсы для этих функций.
[open_net,open_xi,open_ai] = openloop(closed_net,closed_xi,closed_ai); [closed_net,closed_xi,closed_ai] = closeloop(open_net,open_xi,open_ai);
Рассмотрим случай, когда у вас может быть запись поведения Маглева в течение 20 временных шагов, и вы хотите предсказать вперед в течение еще 20 временных шагов.
Во-первых, определите первые 20 шагов входов и целей, представляющих 20 временных шагов, где известный выход определяется целями t. Когда определены следующие 20 временных шагов ввода, используйте сеть для прогнозирования 20 выходов, используя каждый из своих прогнозов обратной связи, чтобы помочь сети выполнить следующее предсказание.
x1 = x(1:20); t1 = t(1:20); x2 = x(21:40);
Затем нейронная сеть с разомкнутым контуром моделируется на этих данных.
[x,xi,ai,t] = preparets(net,x1,{},t1);
[y1,xf,af] = net(x,xi,ai);Теперь конечные состояния входных данных и уровней, возвращаемые сетью, преобразуются в форму замкнутого цикла вместе с сетью. Конечные входные состояния xf и состояния слоев af сети с разомкнутым контуром становятся начальными входными состояниями xi и состояния слоев ai замкнутой сети.
[netc,xi,ai] = closeloop(net,xf,af);
Как правило, используется preparets для определения начального входного состояния и состояния слоя. Поскольку они уже получены в конце моделирования с разомкнутым контуром, необходимость в них отсутствует. preparets для продолжения 20-ступенчатых прогнозов сети с замкнутым контуром.
[y2,xf,af] = netc(x2,xi,ai);
Обратите внимание, что можно установить x2 к различным последовательностям входных данных для проверки различных сценариев в течение, однако, многих временных шагов, которые вы хотели бы сделать прогнозы. Например, чтобы предсказать поведение системы магнитной левитации, если используются 10 случайных входов:
x2 = num2cell(rand(1,10)); [y2,xf,af] = netc(x2,xi,ai);
Если после моделирования сети в форме с замкнутым контуром можно продолжить моделирование в форме с разомкнутым контуром. Здесь состояние с замкнутым контуром преобразуется обратно в состояние с разомкнутым контуром. (Нет необходимости преобразовывать сеть обратно в форму с разомкнутым контуром, поскольку у вас уже есть исходная сеть с разомкнутым контуром.)
[~,xi,ai] = openloop(netc,xf,af);
Теперь можно определить продолжение внешнего ввода и обратной связи с разомкнутым контуром, а также смоделировать сеть с разомкнутым контуром.
x3 = num2cell(rand(2,10)); y3 = net(x3,xi,ai);
Таким образом, можно переключать моделирование между способами с разомкнутым контуром и с замкнутым контуром. Одним из применений для этого является выполнение предсказаний временных рядов датчика, где последнее значение датчика обычно известно, что позволяет прогнозировать следующий этап с разомкнутым контуром. Но в некоторых случаях показания датчика недоступны или известны как ошибочные, что требует этапа прогнозирования с замкнутым контуром. Прогнозы могут чередоваться между формой с разомкнутым контуром и формой с замкнутым контуром в зависимости от наличия показаний датчика последнего шага.