exponenta event banner

dlarray

Массив глубокого обучения для пользовательских циклов обучения

Описание

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

Совет

Для выполнения большинства задач глубокого обучения можно использовать предварительно подготовленную сеть и адаптировать ее к собственным данным. Пример, показывающий, как использовать transfer learning для переподготовки сверточной нейронной сети для классификации нового набора изображений, см. в разделе Train Deep Learning Network to Classify New Images. Кроме того, можно создавать и обучать сети с нуля с помощью layerGraph объекты с trainNetwork и trainingOptions функции.

Если trainingOptions функция не предоставляет возможности обучения, необходимые для выполнения задачи, после чего можно создать индивидуальный цикл обучения с помощью автоматического дифференцирования. Дополнительные сведения см. в разделе Определение сети глубокого обучения для пользовательских циклов обучения.

Создание

Описание

пример

dlX = dlarray(X) возвращает dlarray объект, представляющий X. Если X является dlarray, dlX является копией X.

пример

dlX = dlarray(X,fmt) маркирует данные в dlX в соответствии с форматом данных в fmt. Метки помогают передавать данные глубокого обучения между функциями. См. раздел Использование. Если X является помеченным dlarray, то fmt заменяет существующие метки.

пример

dlX = dlarray(v,dim) принимает вектор v и формат одного символа dim, и возвращает вектор столбца dlarray. Первое измерение dlX имеет метку dim, и второе (одиночное) измерение имеет метку 'U'.

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

развернуть все

Массив данных, указанный как числовой массив типа данных double или single, логический массив, gpuArray объект, или dlarray объект. X должно быть полным, а не разреженным, и должно быть реальным, а не сложным.

Пример: rand(31*23,23)

Формат данных, заданный как вектор символов или скаляр строки. Каждый символ в fmt должна быть одной из следующих меток:

  • S - Пространственный

  • C - Канал

  • B - Наблюдения за партиями

  • T - Время или последовательность

  • U - Не указано

Можно указать любое количество S и U этикетки. Можно указать не более одного из C, B, и T этикетки.

Каждый элемент fmt маркирует соответствующий размер dlX. Если fmt не в указанном порядке ('S' за которым следует 'C' и так далее), то dlarray неявно переставляет оба fmt и данные для соответствия заказу, но без изменения хранения данных.

fmt должно иметь по крайней мере то же количество меток, что и количество размеров dlX. Если указано больше, чем это количество меток, dlarray создает пустые (одиночные) размеры для дополнительных меток.

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

Данные Пример
ФормаФормат данных
2-D изображения

h-by-w-by-c-by-n числовой массив, где h, w, c и n - высота, ширина, количество каналов изображений и количество наблюдений соответственно.

"SSCB"
3-D изображенияh-by-w-d-by-c числовой массив, где h, w, d, c и n - высота, ширина, глубина, количество каналов изображений и количество наблюдений изображения соответственно."SSSCB"
Векторные последовательности

матрица c-by-s-by-n, где c - число признаков последовательности, s - длина последовательности, n - число наблюдений последовательности.

"CBT"
2-D последовательности изображений

h-by-w-by-c-by-s-by-n массив, где h, w, c и n соответствуют высоте, ширине и количеству каналов изображения, соответственно s - длина последовательности, а n - число наблюдений последовательности изображения.

"SSCTB"
3-D последовательности изображений

h-by-w-d-by-c-by-s-by-n массив, где h, w, d и c соответствуют высоте, ширине, глубине и количеству каналов изображения, соответственно s - длина последовательности, а n - число наблюдений последовательности изображения.

"SSSCTB"
Особенностимассив c-by-n, где c - количество элементов, а n - количество наблюдений."CB"

Для получения информации о fmt, см. Использование.

Пример: "SSB"

Пример: 'CBUSS', который dlarray перезаказывает в 'SSCBU'

Вектор данных, заданный как числовой вектор типа данных двойной или одиночный логический вектор, gpuArray векторный объект или dlarray векторный объект. Здесь «вектор» означает любой массив с ровно одним несинглтоновым измерением.

Пример: rand(100,1)

Метка размера, указанная как один символ типа, разрешенного для fmt.

Пример: "S"

Пример: 'S'

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

развернуть все

Массив глубокого обучения, возвращенный как dlarray объект. dlX позволяет автоматически дифференцировать с помощью dlgradient и dlfeval. Если вы поставляете fmt аргумент, dlX имеет метки.

  • Если X - числовой или логический массив, dlX содержит свои данные, возможно, переупорядоченные из-за меток в fmt.

  • Если X является gpuArray, данные в dlX также находится на GPU. Последующие расчеты с использованием dlX выполняются на GPU.

Использование

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

ФункцияОперацияПроверка входного измеренияВлияет на размер входного размера
avgpoolВычислите среднее значение входных данных по перемещающемуся прямоугольному (или кубоидальному) пространственному ('S') области, определенные параметром размера пула.'S''S'
batchnormНормализовать значения, содержащиеся в каждом канале ('C') входных данных.'C' 
crossentropyВычислите перекрестную энтропию между оценками и целевыми значениями, усредненную по размеру партии ('B') размерность.'S', 'C', 'B', 'T', 'U' (Оценки и целевые массивы должны иметь одинаковые размеры.)'S', 'C', 'B', 'T', 'U' (Выходные данные являются немеченым скаляром.)
dlconvВычислите свертку глубокого обучения входных данных с помощью массива фильтров, соответствующего количеству пространственных ('S') и (функция канала) ('C') размеры входного сигнала и добавление постоянного смещения.'S', 'C''S', 'C'
dltranspconvВычислите глубинную обучающую транспонированную свертку входных данных с помощью массива фильтров, соответствующего количеству пространственных ('S') и (функция канала) ('C') размеры входного сигнала и добавление постоянного смещения.'S', 'C''S', 'C'
fullyconnectВычислите взвешенную сумму входных данных и примените смещение для каждого пакета ('B') и времени ('T') размерность.'S', 'C', 'U''S', 'C', 'B', 'T', 'U' (Выходные данные всегда имеют метки 'CB', 'CT', или 'CTB'.)
gru

Примените расчет стробированной повторяющейся единицы к входным данным.

'S', 'C', 'T''C'
lstm

Примените расчет долговременной памяти к входным данным.

'S', 'C', 'T''C'
maxpoolВычислите максимум входных данных по движущейся прямоугольной пространственной ('S') области, определенные параметром размера пула.'S''S'
maxunpoolВычислите операцию разблокировки по пространству ('S') размеры.'S''S'
mseВычислите половину средней квадратичной ошибки между оценками и целевыми значениями, усредненную по размеру партии ('B') размерность.'S', 'C', 'B', 'T', 'U' (Оценки и целевые массивы должны иметь одинаковые размеры.)'S', 'C', 'B', 'T', 'U' (Выходные данные являются немеченым скаляром.)
softmaxПримените активацию softmax к каждому каналу ('C') входных данных.'C' 

Эти функции требуют, чтобы каждый размер имел метку, заданную либо как метки их первого dlarray входные данные или в качестве 'DataFormat' аргумент пары имя-значение, содержащий метки измерения.

dlarray обеспечивает порядок размещения этикеток 'SCBTU'. Такое применение устраняет неоднозначную семантику в операциях, которая неявно соответствует меткам между входами. dlarray также обеспечивает, чтобы метки 'C', 'B', и 'T' каждый может появиться максимум один раз. Функции, использующие эти метки, принимают не более одного размера для каждой метки.

dlarray обеспечивает функции для удаления меток (stripdims), получение размеров, связанных с метками (finddim) и перечисление меток, связанных с dlarray (dims).

Дополнительные сведения о том, как dlarray ведет себя с метками, см. Заметное поведение dlarray.

Функции объекта

avgpoolОбъединение данных в средние значения по пространственным измерениям
batchnormНормализовать все наблюдения для каждого канала независимо
crossentropyПотери перекрестной энтропии для задач классификации
dimsМетки размеров dlarray
dlconvГлубокий учебный сверток
dlgradientВычисление градиентов для пользовательских циклов обучения с помощью автоматического дифференцирования
dltranspconvСвертка с транспонированным глубоким обучением
extractdataИзвлечь данные из dlarray
finddimПоиск размеров с указанной меткой
fullyconnectСуммирование всех взвешенных входных данных и применение смещения
gruСтробированная рекуррентная установка
leakyreluВключить выпрямленный линейный блок с утечкой
lstmДолговременная кратковременная память
maxpoolМаксимальное значение данных пула
maxunpoolРаспаковка выходных данных операции максимального объединения
mseПоловина среднеквадратичной ошибки
reluВключить выпрямленный линейный блок
sigmoidПрименить сигмоидальную активацию
softmaxПрименить активацию softmax к размеру канала
stripdimsУдалить dlarray этикетки

A dlarray также позволяет выполнять числовые, матричные и другие операции. Полный список см. в разделе Список функций с поддержкой dlarray.

Примеры

свернуть все

Создание немаркированного dlarray из матрицы.

rng default % For reproducibility
X = randn(3,5);
dlX = dlarray(X)
dlX = 
  3x5 dlarray

    0.5377    0.8622   -0.4336    2.7694    0.7254
    1.8339    0.3188    0.3426   -1.3499   -0.0631
   -2.2588   -1.3077    3.5784    3.0349    0.7147

Создать dlarray имеет формат данных с метками 'S' и 'C'.

rng default % For reproducibility
X = randn(3,5);
dlX = dlarray(X,'SC')
dlX = 
  3(S) x 5(C) dlarray

    0.5377    0.8622   -0.4336    2.7694    0.7254
    1.8339    0.3188    0.3426   -1.3499   -0.0631
   -2.2588   -1.3077    3.5784    3.0349    0.7147

Если метки указаны в противоположном порядке, dlarray неявно переупорядочивает базовые данные.

dlX = dlarray(X,'CS')
dlX = 
  5(S) x 3(C) dlarray

    0.5377    1.8339   -2.2588
    0.8622    0.3188   -1.3077
   -0.4336    0.3426    3.5784
    2.7694   -1.3499    3.0349
    0.7254   -0.0631    0.7147

Создать dlarray вектор с первой меткой 'T'. Вторая метка, которая dlarray автоматически создает, 'U'.

rng default % For reproducibility
X = randn(6,1);
dlX = dlarray(X,'T')
dlX = 
  6(T) x 1(U) dlarray

    0.5377
    1.8339
   -2.2588
    0.8622
    0.3188
   -1.3077

Если задан вектор строки для X, dlarray неявно переупорядочивает результат в вектор столбца.

X = X';
dlX = dlarray(X,'T')
dlX = 
  6(T) x 1(U) dlarray

    0.5377
    1.8339
   -2.2588
    0.8622
    0.3188
   -1.3077

Совет

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

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