predict

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

Описание

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

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

пример

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

[dlY1,...,dlYN] = predict(dlnet,dlX,'Outputs',layerNames) возвращает выходные параметры dlY1, …, dlYN для заданных слоев.

[dlY1,...,dlYN,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