Как обучить нейронную систему net с несколькими таймсериями? - PullRequest
0 голосов
/ 16 июня 2020

Я пытаюсь обучить feedforwardnet, который принимает timeseries ввод, предсказывает из него timeseries вывод.

У меня есть ячейка ввода размером 20 X 961, где каждая ячейка вектор с двумя элементами (две переменные u1 и u2).

И ячейка вывода, которая также имеет размер 20 X 961, где каждая ячейка представляет собой вектор с двумя элементами (две переменные x1 и x2).

Каждый столбец соответствует одному «запуску» эксперимента, поэтому у меня есть 961 различных результатов экспериментов, с которыми можно обучить net. Всякий раз, когда я пытаюсь ввести код:

[net,tr] = train(net, Input', Output');

, я получаю некоторую ошибку, такую ​​как неправильные numInputs или неправильные numOutputs. Честно говоря, я не знаю достаточно о нейронных сетях Matlab, чтобы знать, что не так, или даже если прямая связь net - это тот тип net, который я ищу. Не могли бы вы дать мне совет? Большое спасибо!

Уменьшенная версия данных, взятых из двух прогонов экспериментов, выглядит следующим образом:

Input = {
[0,1],  [0,2]
[0,1],  [0,2]
[0,1],  [0,2]
[0,1],  [0,2]
[0,1],  [0,2]
[0,1],  [0,2]
[0,1],  [0,2]
[0,1],  [0,2]
[0,1],  [0,2]
[0,1],  [0,2]
[0,1],  [0,2]
[0,1],  [0,2]
[0,1],  [0,2]
[0,1],  [0,2]
[0,1],  [0,2]
[0,1],  [0,2]
[0,1],  [0,2]
[0,1],  [0,2]
[0,1],  [0,2]
[0,1],  [0,2]
}

Output = {
[0,0],  [0,0]
[0,9.93150000000000],   [0,11.9180000000000]
[0,9.99990000000000],   [0,12]
[0,9.99900000000000],   [0,11.9980000000000]
[0,9.98920000000000],   [0,11.9950000000000]
[0,9.99920000000000],   [0,11.9990000000000]
[0,10.0060000000000],   [0,12.0070000000000]
[0,9.99930000000000],   [0,11.9980000000000]
[0,10.0010000000000],   [0,12.0020000000000]
[0,10.0010000000000],   [0,11.9970000000000]
[0,9.99970000000000],   [0,12]
[0,9.99900000000000],   [0,11.9980000000000]
[0,9.99680000000000],   [0,11.9990000000000]
[0,9.99910000000000],   [0,11.9990000000000]
[0,10.0040000000000],   [0,12.0060000000000]
[0,10.0050000000000],   [0,11.9990000000000]
[0,9.99840000000000],   [0,11.9990000000000]
[0,9.99900000000000],   [0,11.9990000000000]
[0,10.0060000000000],   [0,12.0090000000000]
[0,10.0030000000000],   [0,11.9980000000000]
}

1 Ответ

0 голосов
/ 19 июня 2020

Вы можете использовать этот слой cnet, присутствующий в MATLAB. Для вашего варианта использования. Layre cnet: рекуррентные нейронные сети уровня похожи на сети прямого распространения, за исключением того, что каждый уровень имеет повторяющееся соединение с связанной с ним задержкой касания. Это позволяет сети иметь бесконечную динамическую c реакцию на входные данные временного ряда. preparets : Подготовьте входные данные и данные целевого временного ряда для сетевого моделирования или обучения Обратитесь к этому примеру для лучшего понимания:

[X,T] = simpleseries_dataset;
net = layrecnet(1:2,10);
[Xs,Xi,Ai,Ts] = preparets(net,X,T);
net = train(net,Xs,Ts,Xi,Ai);
view(net)
Y = net(Xs,Xi,Ai);
perf = perform(net,Y,Ts)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...