dlode45

Решение для глубокого обучения нежесткого обыкновенного дифференциального уравнения (ODE)

    Описание

    Нейронная операция обыкновенного дифференциального уравнения (ODE) возвращает решение заданного ОДУ.

    dlode45 функция применяет нейронную операцию ODE к dlarray данные. Используя dlarray объекты делают работу с высокими размерными данными легче, позволяя вам пометить размерности. Например, можно пометить, которому размерности соответствуют пространственный, время, канал, и обрабатывают размерности в пакетном режиме с помощью "S"TC, и "B" метки, соответственно. Для незаданных и других размерностей используйте "U" метка. Для dlarray возразите функциям, которые действуют по конкретным размерностям, можно задать метки размерности путем форматирования dlarray возразите непосредственно, или при помощи DataFormat опция.

    Примечание

    dlode45 функционируйте лучше всего удовлетворяет нейронному ОДУ и пользовательским учебным рабочим процессам цикла. Чтобы решить ОДУ для других рабочих процессов, использовать ode45.

    пример

    dlY = dlode45(odefun,tspan,dlY0,theta) интегрирует систему ОДУ, данных odefun на временном интервале, заданном первыми и последними элементами tspan, с начальными условиями dlY0 и параметры theta.

    dlY = dlode45(odefun,tspan,dlY0,theta,DataFormat=FMT) задает формат данных для бесформатных начальных условий dlY0. Формат должен содержать "S" (пространственный), "C" (канал) и "B" (пакетная) размерность помечает только.

    dlY = dlode45(odefun,tspan,dlY0,theta,Name=Value) задает дополнительные опции с помощью одних или нескольких аргументов name-value. Например, dlY = dlode45(odefun,tspan,dlY0,theta,GradientsMode="adjoint") интегрирует систему ОДУ, данных odefun и вычисляет градиенты путем решения связанной примыкающей системы ОДУ.

    Примеры

    свернуть все

    Для начальных условий создайте отформатированный dlarray объект, содержащий пакет 128 28 28 изображения с 64 каналами. Задайте формат "SSCB" (пространственный, пространственный, канал, пакет).

    miniBatchSize = 128;
    inputSize = [28 28];
    numChannels = 64;
    Y0 = rand(inputSize(1),inputSize(2),numChannels,miniBatchSize);
    dlY0 = dlarray(Y0,"SSCB");

    Просмотрите размер и формат начальных условий.

    size(dlY0)
    ans = 1×4
    
        28    28    64   128
    
    
    dims(dlY0)
    ans = 
    'SSCB'
    

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

    odefun = @odeModel;

    Инициализируйте параметры для операции свертки в функции ОДУ. Выходной размер функции ОДУ должен совпадать с размером начальных условий, поэтому задать то же количество фильтров как количество входных каналов.

    filterSize = [3 3];
    numFilters = numChannels;
    
    parameters = struct;
    parameters.Weights = dlarray(rand(filterSize(1),filterSize(2),numChannels,numFilters));
    parameters.Bias = dlarray(zeros(1,numFilters));

    Задайте интервал интегрирования [0 0.1].

    tspan = [0 0.1];

    Примените нейронную операцию ODE.

    dlY = dlode45(odefun,tspan,dlY0,parameters);

    Просмотрите размер и формат выхода.

    size(dlY)
    ans = 1×4
    
        28    28    64   128
    
    
    dims(dlY)
    ans = 
    'SSCB'
    

    Функция ОДУ

    Функция ОДУ odeModel берет в качестве входа входные параметры функции t (неиспользованный) и y, и параметры функции ОДУ p содержание весов свертки и смещений, и возвращает выходной параметр блочной операции свертки-tanh. Операция свертки применяет дополнение таким образом, что выходной размер совпадает с входным размером.

    function z = odeModel(t,y,p)
    
    weights = p.Weights;
    bias = p.Bias;
    z = dlconv(y,weights,bias,Padding="same");
    z = tanh(z);
    
    end

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

    свернуть все

    Функция, чтобы решить в виде указателя на функцию, который задает функцию, чтобы объединяться.

    Задайте odefun как указатель на функцию с синтаксисом z = fcn(t,y,p), где t скаляр, y dlarray, и p набор параметров. Функция возвращает dlarray с тем же размером и форматом как y. Функция должна принять все три входных параметра tY, и p, даже если не все аргументы используются в функции. Размер ОДУ функционирует выход z должен совпадать с размером начальных условий.

    Например, задайте функцию ОДУ, которая применяет операцию свертки, сопровождаемую tanh операцией.

    function z = dlconvtanh(t,y,p)
    
    weights = p.Weights;
    bias = p.Bias;
    z = dlconv(y,weights,bias,Padding="same");
    z = tanh(z);
    
    end
    Обратите внимание здесь что t аргумент не использован.

    Типы данных: function_handle

    Интервал интегрирования в виде числового вектора или бесформатного dlarray вектор с двумя или больше элементами. Элементы в tspan должен все увеличиваться или все уменьшение.

    Решатель налагает начальные условия, данные dlY0 в начальное время tspan(1), затем интегрирует функцию ОДУ от tspan(1) к tspan(end).

    • Если tspan имеет два элемента, [t0 tf], затем решатель возвращает решение, оцененное в точке tf.

    • Если tspan имеет больше чем два элемента, [t0 t1 t2 ... tf], затем решатель возвращает решение, оцененное в данных точках [t1 t2 ... tf]. Решатель не продвигается точно в каждую точку, заданную в tspan. Вместо этого решатель использует свои собственные внутренние шаги, чтобы вычислить решение, затем оценивает решение в точках, заданных в tspan. Решения, произведенные в заданных точках, имеют тот же порядок точности как решения, вычисленные на каждом внутреннем шаге.

      Определение нескольких промежуточных точек оказывает мало влияния на КПД расчета, но для больших систем это может влиять на управление памятью.

    Примечание

    Поведение dlode45 функция отличается от ode45 функция.

    Если InitialStep или MaxStep [], затем программное обеспечение использует значения tspan инициализировать значения.

    • Если InitialStep [], затем программное обеспечение использует элементы tspan как индикация относительно шкалы задачи. Когда вы задаете tspan с различными числами элементов может измениться решение решателя.

    • Если MaxStep [], затем программное обеспечение вычисляет максимальный размер шага с помощью первых и последних элементов tspan. Когда вы изменяете начальные или окончательные значения tspan, решение решателя может измениться, потому что решатель использует различную последовательность шага.

    Начальные условия в виде отформатированного или бесформатного dlarray объект.

    Если dlY0 бесформатный dlarray, затем необходимо задать формат с помощью DataFormat опция.

    Для нейронных операций ODE формат данных должен содержать "S"C, и "B" размерность помечает только. Начальные условия не должны иметь "T" или "U" размерность.

    Параметры ОДУ функционируют в виде одного из следующего:

    • dlarray объект

    • Массив ячеек dlarray объекты

    • Структура dlarray объекты или вложенные структуры dlarray объекты

    • Таблица с переменными Layer, Parameter, и Value, где Layer и Parameter содержите слой и названия параметра и Value содержит значение параметров. Задайте переменные как dlarray объекты.

    Аргументы name-value

    Задайте дополнительные пары аргументов как Name1=Value1,...,NameN=ValueN, где Name имя аргумента и Value соответствующее значение. Аргументы name-value должны появиться после других аргументов, но порядок пар не имеет значения.

    Пример: dlY = dlode45(odefun,tspan,dlY0,theta,GradientsMode="adjoint") интегрирует систему ОДУ, данных odefun и вычисляет градиенты путем решения связанной примыкающей системы ОДУ.

    Порядок размерности бесформатных входных данных в виде вектора символов или строкового скаляра FMT это обеспечивает метку для каждой размерности данных.

    Когда вы задаете формат dlarray объект, каждый символ обеспечивает метку для каждой размерности данных и должен быть одним из следующего:

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

    • "C" — Канал

    • "B" — Пакет (например, выборки и наблюдения)

    • "T" — Время (например, временные шаги последовательностей)

    • "U" — Незаданный

    Для нейронных операций ODE формат данных должен содержать "S"C, и "B" размерность помечает только. Начальные условия не должны иметь "T" или "U" размерность.

    Необходимо задать DataFormat когда dlY0 не отформатированный dlarray.

    Пример: DataFormat="SSCB"

    Типы данных: char | string

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

    • "direct" – Вычислите градиенты backpropagating посредством операций, предпринятых числовым решателем. Эта опция лучше всего удовлетворяет большим мини-пакетным размерам или когда tspan содержит много значений.

    • "adjoint" – Вычислите градиенты путем решения связанной примыкающей системы ОДУ. Эта опция лучше всего удовлетворяет небольшим мини-пакетным размерам или когда tspan содержит небольшое количество значений.

    Предупреждение

    dlaccelerate функция не поддерживает ускорение dlode45 функционируйте когда GradientMode опцией является "direct". Получившаяся ускоренная функциональная сила возвращает неожиданные результаты. Ускорять код, который вызывает dlode45 функция, набор GradientMode опция к "adjoint" или ускорьте части своего кода, которые не вызывают dlode45 с GradientMode набор опции к "direct".

    Начальный размер шага в виде положительной скалярной величины или [].

    Если InitialStepSize [], затем функция автоматически определяет начальный размер шага на основе интервала интегрирования и выхода соответствия функции ОДУ начальным условиям.

    Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

    Максимальный размер шага в виде положительной скалярной величины или [].

    Если MaxStepSize [], затем функция использует одну десятую интервала размера интегрирования.

    Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

    Допуск относительной погрешности в виде положительной скалярной величины. Относительная погрешность применяется ко всем компонентам решения.

    Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

    Допуск абсолютной погрешности в виде положительной скалярной величины. Относительная погрешность применяется ко всем компонентам решения.

    Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

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

    свернуть все

    Решение нейронного ОДУ во времена, данные tspan(2:end), возвращенный как dlarray объект с тем же базовым типом данных как dlY0.

    Если dlY0 отформатированный dlarray и tspan содержит точно два элемента, затем dlY имеет тот же формат как dlY0. Если dlY0 не отформатированный dlarray и tspan содержит точно два элемента, затем dlY бесформатный dlarray с той же размерностью заказывают как dlY0.

    Если dlY0 отформатированный dlarray и tspan содержит больше чем два элемента, затем dlY имеет тот же формат как dlY0 с дополнительным добавленным "T" (время) размерность. Если dlY0 не отформатированный dlarray и tspan содержит больше чем два элемента, затем dlY бесформатный dlarray с той же размерностью заказывают как dlY0 с дополнительной добавленной размерностью, соответствующей времени.

    Алгоритмы

    Нейронная операция обыкновенного дифференциального уравнения (ODE) возвращает решение заданного ОДУ. В частности, учитывая вход, нейронная операция ODE выводит числовое решение ОДУ y=f(t,y,θ) в течение периода времени (t0, t1) и с начальным условием y(t0) = y0, где t и y обозначают входные параметры функции ОДУ и θ, является набором настраиваемых параметров. Как правило, начальным условием y0 является или сетевой вход или выход другой операции глубокого обучения.

    dlode45 функционируйте использует ode45 функция, которая основана на явной формуле Рунге-Кутта (4,5), модификации Дорманда-Принца. Это - сингл - step solver – в вычислении y(tn), этому нужно только решение в непосредственно предшествующем моменте времени, [2] [3] y(tn-1).

    Ссылки

    [1] Чен, Рики Т. К., Юлия Рубанова, Джесси Бетанкур и Давид Дювено. “Нейронные Обыкновенные дифференциальные уравнения”. Предварительно распечатайте, представленный 19 июня 2018. https://arxiv.org/abs/1806.07366.

    [2] Dormand, J. R. и P. J. Принц. “Семейство Встроенных Формул Рунге-Кутта”. Журнал Вычислительной и Прикладной математики 6, № 1 (март 1980): 19–26. https://doi.org/10.1016/0771-050X (80) 90013-3.

    [3] Шемпин, Лоуренс Ф. и Марк В. Рейчелт. “Пакет ODE MATLAB”. SIAM Journal на Научных вычислениях 18, № 1 (январь 1997): 1–22. https://doi.org/10.1137/S1064827594276424.

    Введенный в R2021b
    Для просмотра документации необходимо авторизоваться на сайте