predict

Вычислите нейронную сеть для глубокого обучения выход для вывода

Описание

Некоторые слои глубокого обучения ведут себя по-другому во время обучения и заключают (предсказание). Например, во время обучения, слои уволенного случайным образом обнуляют входные элементы, чтобы помочь предотвратить сверхподбор кривой, но во время вывода, слои уволенного не изменяют вход.

Чтобы вычислить сетевые выходные параметры для вывода, используйте predict функция. Чтобы вычислить сетевые выходные параметры для обучения, используйте forward функция. Для предсказания с SeriesNetwork и DAGNetwork объекты, смотрите predict.

пример

dlY = predict(dlnet,dlX) возвращает сетевой выход dlY во время вывода, учитывая входные данные dlX и сеть dlnet с одним входом и одним выходом.

dlY = predict(dlnet,dlX1,...,dlXM) возвращает сетевой выход dlY во время вывода, учитывая M входные параметры dlX1, ...,dlXM и сеть dlnet это имеет M входные параметры и один выход.

[dlY1,...,dlYN] = predict(___) возвращает N выходные параметры dlY1, …, dlYN во время вывода для сетей, которые имеют N выходные параметры с помощью любого из предыдущих синтаксисов.

[dlY1,...,dlYK] = predict(___,'Outputs',layerNames) возвращает выходные параметры dlY1, …, dlYK во время вывода для заданных слоев с помощью любого из предыдущих синтаксисов.

[___,state] = predict(___) также возвращает обновленное сетевое состояние с помощью любого из предыдущих синтаксисов.

Совет

Для предсказания с SeriesNetwork и DAGNetwork объекты, смотрите predict.

Примеры

свернуть все

В этом примере показано, как сделать предсказания с помощью dlnetwork объект путем разделения данных в мини-пакеты.

Для больших наборов данных, или при предсказании на оборудовании с ограниченной памятью, делают предсказания путем разделения данных в мини-пакеты. При создании предсказаний с SeriesNetwork или DAGNetwork объекты, predict функционируйте автоматически разделяет входные данные в мини-пакеты. Для dlnetwork объекты, необходимо разделить данные в мини-пакеты вручную.

Загрузите dlnetwork Объект

Загрузите обученный dlnetwork возразите и соответствующие классы.

s = load("digitsCustom.mat");
dlnet = s.dlnet;
classes = s.classes;

Загрузите данные для предсказания

Загрузите данные о цифрах для предсказания.

digitDatasetPath = fullfile(matlabroot,'toolbox','nnet','nndemos', ...
    'nndatasets','DigitDataset');
imds = imageDatastore(digitDatasetPath, ...
    'IncludeSubfolders',true);

Сделайте предсказания

Цикл по мини-пакетам тестовых данных и делает предсказания с помощью пользовательского цикла предсказания. Чтобы считать мини-пакет данных из datastore, установите ReadSize свойство к мини-пакетному размеру.

Для каждого мини-пакета:

  • Преобразуйте данные в dlarray объекты с базовым одним типом и указывают, что размерность маркирует 'SSCB' (пространственный, пространственный, канал, пакет).

  • Для предсказания графического процессора преобразуйте в gpuArray объекты.

  • Сделайте предсказания с помощью predict функция.

  • Определите метки класса путем нахождения максимальных баллов.

Задайте опции предсказания. Задайте мини-пакетный размер 128 и сделайте предсказания на графическом процессоре, если вы доступны. Используя графический процессор требует Parallel Computing Toolbox™, и CUDA® включил NVIDIA®, графический процессор с вычисляет возможность 3.0 или выше.

miniBatchSize = 128;
executionEnvironment = "auto";

Установите свойство размера чтения datastore изображений к мини-пакетному размеру.

imds.ReadSize = miniBatchSize;

Сделайте предсказания цикличным выполнением по мини-пакетам данных.

numObservations = numel(imds.Files);
YPred = strings(1,numObservations);
i = 1;

% Loop over mini-batches.
while hasdata(imds)
    
    % Read mini-batch of data.
    data = read(imds);
    X = cat(4,data{:});
    
    % Normalize the images.
    X = single(X)/255;
    
    % Convert mini-batch of data to dlarray.
    dlX = dlarray(X,'SSCB');
    
    % If training on a GPU, then convert data to gpuArray.
    if (executionEnvironment == "auto" && canUseGPU) || executionEnvironment == "gpu"
        dlX = gpuArray(dlX);
    end
    
    % Make predictions using the predict function.
    dlYPred = predict(dlnet,dlX);
   
    % Determine corresponding classes.
    [~,idxTop] = max(extractdata(dlYPred),[],1);
    idxMiniBatch = i:min((i+miniBatchSize-1),numObservations);
    YPred(idxMiniBatch) = classes(idxTop);
    
    i = i + miniBatchSize;
end

Визуализируйте некоторые предсказания.

idx = randperm(numObservations,9);
figure
for i = 1:9
    subplot(3,3,i)
    I = imread(imds.Files{idx(i)});
    label = YPred(idx(i));
    imshow(I)
    title("Label: " + label)
end

Входные параметры

свернуть все

Сеть для пользовательских учебных циклов в виде dlnetwork объект.

Входные данные в виде отформатированного dlarray. Для получения дополнительной информации о dlarray форматы, смотрите fmt входной параметр dlarray.

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

  • Если layerNames(i) соответствует слою с одним выходом, затем layerNames(i) имя слоя.

  • Если layerNames(i) соответствует слою с несколькими выходными параметрами, затем layerNames(i) имя слоя, сопровождаемое символьным "/"и имя слоя вывело: 'layerName/outputName'.

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

свернуть все

Выходные данные, возвращенные как отформатированный dlarray. Для получения дополнительной информации о dlarray форматы, смотрите fmt входной параметр dlarray.

Обновленное сетевое состояние, возвращенное как таблица.

Сетевое состояние является таблицей с тремя столбцами:

  • Layer – Имя слоя в виде строкового скаляра.

  • Parameter – Название параметра в виде строкового скаляра.

  • Value – Значение параметра в виде объекта числового массива.

Сетевое состояние содержит информацию, которую помнит сеть между итерациями. Например, состояние LSTM и слоев нормализации партии.

Обновите состояние dlnetwork использование State свойство.

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

Введенный в R2019b