exponenta event banner

predictAndUpdateState

Прогнозирование ответов с использованием обученной рецидивирующей нейронной сети и обновление состояния сети

Описание

Вы можете делать прогнозы, используя обученную сеть глубокого обучения на CPU или GPU. Для использования графического процессора требуется Toolbox™ параллельных вычислений и поддерживаемое устройство графического процессора. Сведения о поддерживаемых устройствах см. в разделе Поддержка графического процессора по выпуску (Parallel Computing Toolbox). Укажите требования к оборудованию с помощью 'ExecutionEnvironment' аргумент пары имя-значение.

пример

[updatedNet,YPred] = predictAndUpdateState(recNet,sequences) предсказывает ответы для данных в sequences использование обученной рекуррентной нейронной сети recNet и обновляет состояние сети.

Эта функция поддерживает только рецидивирующие нейронные сети. Вход recNet должен иметь по крайней мере один повторяющийся слой.

[updatedNet,YPred] = predictAndUpdateState(___,Name,Value) использует любой из аргументов в предыдущих синтаксисах и дополнительных параметрах, указанных одним или несколькими Name,Value аргументы пары. Например, 'MiniBatchSize',27 делает прогнозы с использованием мини-партий размером 27.

Совет

При составлении прогнозов с последовательностями различной длины размер мини-партии может влиять на количество дополнений, добавляемых к входным данным, что может привести к различным прогнозируемым значениям. Попробуйте использовать различные значения, чтобы увидеть, что лучше всего подходит для вашей сети. Чтобы указать размер мини-пакета и параметры заполнения, используйте 'MiniBatchSize' и 'SequenceLength' соответственно.

Примеры

свернуть все

Прогнозировать ответы с использованием обученной рецидивирующей нейронной сети и обновлять состояние сети.

Груз JapaneseVowelsNet, предварительно подготовленная сеть долговременной памяти (LSTM), обученная на наборе данных японских гласных, как описано в [1] и [2]. Эта сеть была обучена последовательностям, отсортированным по длине последовательности с размером мини-партии 27.

load JapaneseVowelsNet

Просмотр сетевой архитектуры.

net.Layers
ans = 
  5x1 Layer array with layers:

     1   'sequenceinput'   Sequence Input          Sequence input with 12 dimensions
     2   'lstm'            LSTM                    LSTM with 100 hidden units
     3   'fc'              Fully Connected         9 fully connected layer
     4   'softmax'         Softmax                 softmax
     5   'classoutput'     Classification Output   crossentropyex with '1' and 8 other classes

Загрузите данные теста.

[XTest,YTest] = japaneseVowelsTestData;

Закольцовывание временных шагов в последовательности. Спрогнозировать баллы каждого временного шага и обновить состояние сети.

X = XTest{94};
numTimeSteps = size(X,2);
for i = 1:numTimeSteps
    v = X(:,i);
    [net,score] = predictAndUpdateState(net,v);
    scores(:,i) = score;
end

Постройте график оценок прогнозирования. График показывает, как изменяются оценки прогноза между временными шагами.

classNames = string(net.Layers(end).Classes);
figure
lines = plot(scores');
xlim([1 numTimeSteps])
legend("Class " + classNames,'Location','northwest')
xlabel("Time Step")
ylabel("Score")
title("Prediction Scores Over Time Steps")

Выделите оценки прогнозирования во временных шагах для правильного класса.

trueLabel = YTest(94)
trueLabel = categorical
     3 

lines(trueLabel).LineWidth = 3;

Figure contains an axes. The axes with title Prediction Scores Over Time Steps contains 9 objects of type line. These objects represent Class 1, Class 2, Class 3, Class 4, Class 5, Class 6, Class 7, Class 8, Class 9.

Отображение последнего прогноза временного шага на гистограмме.

figure
bar(score)
title("Final Prediction Scores")
xlabel("Class")
ylabel("Score")

Figure contains an axes. The axes with title Final Prediction Scores contains an object of type bar.

Входные аргументы

свернуть все

Обученная рецидивирующая нейронная сеть, указанная как SeriesNetwork или DAGNetwork объект. Обученную сеть можно получить, импортируя предварительно обученную сеть или обучая собственную сеть с помощью trainNetwork функция.

recNet является рецидивирующей нейронной сетью. Он должен иметь по крайней мере один повторяющийся уровень (например, сеть LSTM).

Данные последовательности или временного ряда, заданные как массив N-by-1 ячеек числовых массивов, где N - количество наблюдений, числовой массив, представляющий одну последовательность, или хранилище данных.

Для ввода массива ячеек или числового массива размеры числовых массивов, содержащих последовательности, зависят от типа данных.

ВходОписание
Векторные последовательностиматрицы c-by-s, где c - число признаков последовательностей, а s - длина последовательности.
2-D последовательности изображениймассивы h-by-w-by-s, где h, w и c соответствуют высоте, ширине и количеству каналов изображений, соответственно, и s - длина последовательности.
3-D последовательности изображенийh-by-w-d-by-c-by-s, где h, w, d и c соответствуют высоте, ширине, глубине и количеству каналов 3-D изображений, соответственно, и s - длина последовательности.

Для входа хранилища данных хранилище данных должно возвратить данные как множество клетки последовательностей или стола, первая колонка которого содержит последовательности. Размеры данных последовательности должны соответствовать приведенной выше таблице.

Аргументы пары «имя-значение»

Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.

Пример: [updatedNet, YPred] = predictAndUpdateState(recNet,C,'MiniBatchSize',27) делает прогнозы с использованием мини-партий размером 27.

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

При составлении прогнозов с последовательностями различной длины размер мини-партии может влиять на количество дополнений, добавляемых к входным данным, что может привести к различным прогнозируемым значениям. Попробуйте использовать различные значения, чтобы увидеть, что лучше всего подходит для вашей сети. Чтобы указать размер мини-пакета и параметры заполнения, используйте 'MiniBatchSize' и 'SequenceLength' соответственно.

Пример: 'MiniBatchSize',256

Оптимизация производительности, указанная как пара, разделенная запятыми, состоящая из 'Acceleration' и одно из следующих:

  • 'auto' - Автоматически применять ряд оптимизаций, подходящих для входной сети и аппаратных ресурсов.

  • 'none' - Отключить все ускорения.

Параметр по умолчанию: 'auto'.

Использование 'Acceleration' выбор 'auto' может обеспечить преимущества производительности, но за счет увеличенного начального времени выполнения. Последующие вызовы с совместимыми параметрами выполняются быстрее. Оптимизация производительности используется при планировании многократного вызова функции с использованием новых входных данных.

Пример: 'Acceleration','auto'

Аппаратный ресурс, указанный как разделенная запятыми пара, состоящая из 'ExecutionEnvironment' и одно из следующих:

  • 'auto' - использовать графический процессор, если он доступен; в противном случае используйте CPU.

  • 'gpu' - Использовать графический процессор. Для использования графического процессора требуется панель параллельных вычислений и поддерживаемое устройство графического процессора. Сведения о поддерживаемых устройствах см. в разделе Поддержка графического процессора по выпуску (Parallel Computing Toolbox). Если панель инструментов Parallel Computing Toolbox или подходящий графический процессор недоступны, программа возвращает ошибку.

  • 'cpu' - Использовать ЦП.

Пример: 'ExecutionEnvironment','cpu'

Опция для вставки, усечения или разделения входных последовательностей, заданная как одна из следующих:

  • 'longest' - Последовательности прокладок в каждой мини-партии должны иметь ту же длину, что и самая длинная последовательность. Этот параметр не отбрасывает данные, хотя заполнение может вызвать шум в сети.

  • 'shortest' - Усечение последовательностей в каждой мини-партии до такой же длины, что и самая короткая последовательность. Этот параметр обеспечивает отсутствие добавления дополнений за счет отбрасывания данных.

  • Положительное целое число - для каждой мини-партии поместите последовательности в ближайшую кратную указанную длину, которая больше, чем самая длинная длина последовательности в мини-партии, а затем разбейте последовательности на меньшие последовательности указанной длины. Если происходит разделение, программа создает дополнительные мини-пакеты. Используйте эту опцию, если полные последовательности не помещаются в память. Либо попробуйте уменьшить количество последовательностей на мини-пакет, установив 'MiniBatchSize' для более низкого значения.

Дополнительные сведения об эффекте заполнения, усечения и разделения входных последовательностей см. в разделах Заполнение последовательности, усечение и разделение.

Пример: 'SequenceLength','shortest'

Направление заполнения или усечения, указанное как одно из следующих:

  • 'right' - Последовательность подушек или усечений справа. Последовательности начинаются на одном и том же этапе, и программное обеспечение усекает или добавляет дополнение к концу последовательностей.

  • 'left' - Последовательность подушек или усечений слева. Программное обеспечение усекает или добавляет дополнение к началу последовательностей, так что последовательности заканчиваются на одном и том же шаге времени.

Поскольку уровни LSTM обрабатывают данные последовательности один раз за раз, когда уровень OutputMode свойство - 'last'любое заполнение на последних временных этапах может отрицательно влиять на выход слоя. Для размещения или усечения данных последовательности слева установите 'SequencePaddingDirection' опция для 'left'.

Для сетей «последовательность-последовательность» (когда OutputMode свойство - 'sequence' для каждого уровня LSTM), любое заполнение в первых временных шагах может негативно влиять на прогнозы для более ранних временных шагов. Для добавления или усечения данных последовательности справа установите 'SequencePaddingDirection' опция для 'right'.

Дополнительные сведения об эффекте заполнения, усечения и разделения входных последовательностей см. в разделах Заполнение последовательности, усечение и разделение.

Значение, с помощью которого подаются входные последовательности, заданные как скаляр. Параметр допустим только в том случае, если SequenceLength является 'longest' или положительное целое число. Не устанавливать последовательности с NaN, поскольку это может распространять ошибки по всей сети.

Пример: 'SequencePaddingValue',-1

Выходные аргументы

свернуть все

Обновленная сеть. updatedNet является сетью того же типа, что и входная сеть.

Прогнозируемые оценки или ответы, возвращаемые в виде матрицы или массива ячеек матриц. Формат YPred зависит от типа проблемы.

В следующей таблице описывается формат проблем классификации.

ЗадачаФормат
Классификация «последовательность-метка»Матрица N-by-K, где N - число наблюдений, а K - число классов.
Классификация последовательности к последовательности

N-by-1 массив ячеек матриц, где N - количество наблюдений. Последовательности представляют собой матрицы с K строками, где K - количество классов. Каждая последовательность имеет то же количество временных шагов, что и соответствующая входная последовательность после применения SequenceLength опция для каждой мини-партии независимо.

Для проблем классификации последовательности к последовательности с одним наблюдением, sequences может быть матрицей. В этом случае YPred - матрица баллов K-by-S, где K - количество классов, а S - общее количество временных шагов в соответствующей входной последовательности.

В следующей таблице описывается формат для проблем регрессии.

ЗадачаФормат
Регрессия «последовательность к одному»Матрица N-по-R, где N - количество наблюдений, а R - количество откликов.
Регрессия последовательности к последовательности

N-by-1 клеточный массив числовых последовательностей, где N - количество наблюдений. Последовательности представляют собой матрицы с R строками, где R - количество откликов. Каждая последовательность имеет то же количество временных шагов, что и соответствующая входная последовательность после применения SequenceLength опция для каждой мини-партии независимо.

Для проблем последовательности к последовательности с одним наблюдением, sequences может быть матрицей. В этом случае YPred является матрицей откликов.

Алгоритмы

При обучении сети с помощью trainNetwork функция или при использовании функций прогнозирования или проверки с DAGNetwork и SeriesNetwork объекты, программное обеспечение выполняет эти вычисления, используя арифметику с одной точностью и плавающей запятой. Функции обучения, прогнозирования и проверки включают trainNetwork, predict, classify, и activations. Программа использует арифметику с одинарной точностью при обучении сетей с использованием процессоров и графических процессоров.

Ссылки

[1] М. Кудо, Дж. Тояма и М. Симбо. «Многомерная классификация кривых с использованием сквозных областей». Буквы распознавания образов. т. 20, № 11-13, стр. 1103-1111.

[2] Хранилище машинного обучения UCI: набор данных гласных на японском языке. https://archive.ics.uci.edu/ml/datasets/Japanese+Vowels

Расширенные возможности

..
Представлен в R2017b