dlarray

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

Описание

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

Совет

Для большинства задач глубокого обучения можно использовать предварительно обученную сеть и адаптировать ее к собственным данным. Для примера, показывающего, как использовать передачу обучения для переобучения сверточной нейронной сети для классификации нового набора изображений, смотрите Train Нейронной сети для глубокого обучения для классификации новых изображений. Также можно создавать и обучать сети с нуля, используя 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 w c n числовым массивом, где h, w, c и n высота, ширина, количество каналов изображений и количество наблюдений, соответственно.

"SSCB"
3-D изображенияh w d 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 -by- d -by- c -by- s n массив, где h, w, d и c соответствуют высоте, ширине, глубине и количеству каналов изображения, соответственно, s является длиной последовательности, а n - количеством наблюдений последовательности изображений.

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

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

Пример: "SSB"

Пример: 'CBUSS', что dlarray переупорядочения на 'SSCBU'

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

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

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

Пример: "S"

Пример: 'S'

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

расширить все

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

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

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

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

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

ФункцияОперацияВалидация входной размерностиВлияния размера Входа измерения
avgpoolВычислите среднее значение входных данных по движущимся прямоугольным (или кубоидальным) пространственным ('S') области, заданные параметром pool size.'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') области, заданные параметром pool size.'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