主要内容

dlode45

深度学习解决该常微分方程(ODE)

自从R2021b

    描述

    神经常微分方程(ODE)操作返回指定的颂歌的解决方案。

    dlode45神经颂歌操作适用于函数dlarray数据。使用dlarray更易于处理高维数据的对象允许您标签的尺寸。例如,您可以标签尺寸对应于空间,时间,频道,使用批处理维度“S”,“T”,“C”,“B”标签,分别。未指明的和其他维度,使用“U”标签。为dlarray对象的函数操作特定的尺寸,你可以指定尺寸标签的格式dlarray直接对象,或通过使用DataFormat选择。

    请注意

    dlode45函数最适合神经颂歌和自定义训练循环工作流。为其他工作流解决常微分方程,使用数值

    例子

    Y= dlode45 (,tspan,Y0)集成系统的常微分方程的特点dlnetwork对象在定义的时间间隔的第一个和最后一个元素tspan和初始条件Y0(因为R2023a)

    例子

    Y= dlode45 (odefun,tspan,Y0,θ)集成系统的常微分方程的函数处理odefun在定义的时间间隔的第一个和最后一个元素tspan,初始条件Y0和参数θ

    Y= dlode45 (___,DataFormat = FMT)指定的数据格式无格式的初始条件Y0。必须包含格式“S”(空间),“C”(频道),“B”(批)尺寸标签。

    Y= dlode45 (___,名称=值)使用一个或多个名称参数指定附加选项。例如,Y = dlode45 (odefun tspan, Y0,θ,GradientMode =“伴随”)集成系统的常微分方程odefun并计算梯度通过求解相关的伴随ODE体系。

    例子

    全部折叠

    为初始条件,创建一个格式化的dlarray对象包含128数字特性的观测数据与4频道。指定的格式“CB”(频道,批处理)。

    miniBatchSize = 128;numChannels = 4;Y0 =兰德(numChannels miniBatchSize);Y0 = dlarray (Y0,“CB”);

    视图的大小和格式的初始条件。

    大小(Y0)
    ans =1×2128年4
    dim (Y0)
    ans =“CB”

    创建一个dlnetwork对象特征ODE函数由两个完全与双曲正切激活它们之间的连接操作。

    层= [featureInputLayer (4) fullyConnectedLayer (10) tanhLayer fullyConnectedLayer (4)];网= dlnetwork(层);

    指定一个区间[0 0.1]的集成。

    tspan = 0.1 [0];

    应用神经颂歌操作。

    Y = dlode45(净、tspan Y0);

    视图的大小和格式输出。

    大小(Y)
    ans =1×2128年4
    退去(Y)
    ans =“CB”

    为初始条件,创建一个格式化的dlarray对象包含了一批128 28-by-28图像64个频道。指定的格式“SSCB”(空间、空间、通道、批)。

    miniBatchSize = 128;inputSize = 28 [28];numChannels = 64;Y0 =兰德(inputSize (1) inputSize (2), numChannels, miniBatchSize);Y0 = dlarray (Y0,“SSCB”);

    视图的大小和格式的初始条件。

    大小(Y0)
    ans =1×428日28 64 128
    dim (Y0)
    ans = ' SSCB '

    指定ODE函数。定义的函数odeModel中列出,ODE函数部分的例子,应用卷积操作了双曲正切操作输入数据。

    odefun = @odeModel;

    初始化参数在ODE函数卷积操作。ODE函数的输出尺寸必须匹配的大小初始条件,所以相同数量的过滤器指定为输入通道的数量。

    filterSize = 3 [3];numFilters = numChannels;参数=结构;参数。重量= dlarray(兰特(filterSize (1) filterSize (2), numChannels, numFilters));参数。偏见= dlarray (0 (1, numFilters));

    指定一个区间[0 0.1]的集成。

    tspan = 0.1 [0];

    应用神经颂歌操作。

    Y = dlode45 (odefun tspan, Y0,参数);

    视图的大小和格式输出。

    大小(Y)
    ans =1×428日28 64 128
    退去(Y)
    ans = ' SSCB '

    ODE函数

    ODE函数odeModel作为输入函数的输入t(未使用),y,ODE函数参数p包含卷积重量和偏见,并返回convolution-tanh块操作的输出。卷积操作适用于填充,这样输出大小匹配输入的大小。

    函数z = odeModel (t y p)权重= p.Weights;偏见= p.Bias;z = dlconv (y,权重、偏见、填充=“相同”);z =双曲正切(z);结束

    输入参数

    全部折叠

    自从R2023a

    神经网络描述神经颂歌函数,指定为一个初始化dlnetwork对象。

    如果有一个输入,然后预测(净,Y)定义ODE体系。如果有两个输入,然后呢预测(净、T、Y)定义ODE体系,T是一个时间步重复批维度。

    当第一个参数是一个dlnetwork对象和GradientMode“伴随”,网络状态属性必须是空的。使用网络与一个非空的状态属性,设置GradientMode“直接”

    函数来解决,指定为一个函数处理,定义了函数积分。

    指定odefun作为处理函数的语法z = fcn (t y p),在那里t是一个标量,y是一个dlarray,p是一组参数。函数返回一个dlarray相同的大小和格式y。必须接受所有三个输入参数的函数t,y,p,即使不是所有的参数都是在函数中使用。ODE函数输出的大小z必须匹配的大小初始条件。

    例如,指定ODE卷积运算,后跟一个双曲正切函数,应用操作。

    函数z = dlconvtanh (t y p)权重= p.Weights;偏见= p.Bias;z = dlconv (y,权重、偏见、填充=“相同”);z =双曲正切(z);结束
    注意在这里t参数是未使用的。

    数据类型:function_handle

    间隔的集成,指定为一个数值向量或未格式化dlarray向量与两个或两个以上的元素。中的元素tspan必须所有增加或减少。

    求解的初始条件Y0在最初的时间tspan (1),然后ODE集成功能tspan (1)tspan(结束)

    • 如果tspan有两个元素,(t0 tf),然后点解算器返回的解决方案评估特遣部队

    • 如果tspan有两个以上的元素,(t0 t1 t2……tf),那么解算器返回给定的点解决方案评估(t1 t2……tf)。解决不精确步中指定的每个点tspan。相反,解算器使用自己内部的步骤来计算解决方案,然后评估解决方案中指定的点tspan。在指定点金宝搏官方网站产生的解决方案相同的精确度在每个内部一步计算的解决方案。

      指定一些中间点几乎没有影响计算的效率,但对于大型系统它可以影响内存管理。

    请注意

    的行为dlode45功能不同于数值函数。

    如果InitialStepMaxStep[],那么软件使用的值tspan初始化值。

    • 如果InitialStep[],那么软件使用的元素tspan作为一个任务的规模。当你指定tspan与不同数量的元素,解决方案的解决者可以改变。

    • 如果MaxStep[],那么软件计算的最大使用第一个和最后一个元素的步长tspan。当你改变了最初的或最终的值tspan的解决方案解决者可以改变,因为解算器使用不同的步骤序列。

    初始条件,指定为一个格式化的或未格式化dlarray对象。

    如果Y0是一个非格式化dlarray,那么你必须指定使用的格式DataFormat选择。

    对于神经颂歌操作,数据必须包含格式“S”,“C”,“B”尺寸标签。初始条件必须没有“T”“U”维度。

    颂歌函数的参数,指定这些值之一:

    • dlnetwork对象(因为R2023a)

    • dlarray对象

    • 单元阵列的一个或多个值:

      • dlnetwork对象(因为R2023a)

      • dlarray对象

    • 结构或嵌套结构的一个或多个值:

      • dlnetwork对象(因为R2023a)

      • dlarray对象

    • 表变量,参数,价值,在那里参数控制层和参数名称,价值包含参数值。指定的变量作为dlarray对象。

    名称-值参数

    指定可选的双参数作为Name1 = Value1,…,以=家,在那里的名字参数名称和吗价值相应的价值。名称-值参数必须出现在其他参数,但对的顺序无关紧要。

    例子:Y = dlode45 (odefun tspan, Y0,θ,GradientMode =“伴随”)集成系统的常微分方程odefun并计算梯度通过求解相关的伴随ODE体系。

    维度的非格式化输入数据,指定为一个特征向量或字符串标量FMT为每个维度的数据提供一个标签。

    当你指定的格式dlarray对象,每个字符为每个维度的数据提供了一个标签,必须这些选项之一:

    • “S”——空间

    • “C”——频道

    • “B”批处理(例如,样品和观察)

    • “T”时间(例如,时间序列的步骤)

    • “U”——未指明的

    对于神经颂歌操作,数据必须包含格式“S”,“C”,“B”尺寸标签。初始条件必须没有“T”“U”维度。

    您必须指定DataFormatY0不是一个格式化的dlarray

    例子:DataFormat = " SSCB "

    数据类型:字符|字符串

    方法计算梯度对初始条件和参数时使用dlgradient函数,指定为以下之一:

    • “直接”——计算梯度backpropagating通过操作进行数值求解。这个选项最适合大型mini-batch大小或者当tspan包含了许多价值。

    • “伴随”——计算梯度通过求解相关的伴随ODE体系。这个选项最适合小mini-batch大小或者当tspan包含少量的值。

    当第一个参数是一个dlnetwork对象和GradientMode“伴随”,网络状态属性必须是空的。使用网络与一个非空的状态属性,设置GradientMode“直接”

    dlaccelerate功能不支持加速金宝appdlode45函数时,GradientMode选择是“直接”。加速调用的代码dlode45函数,设置GradientMode选项“伴随”或加速部分不调用的代码dlode45函数与GradientMode选项设置为“直接”

    警告

    GradientMode“伴随”,odefun必须支持函金宝app数加速度。否则,该函数可以返回意想不到的结果。

    GradientMode“伴随”,软件痕迹ODE函数确定计算输入图像用于自动分化。这种跟踪过程可能需要一些时间,可以最后再计算相同的痕迹。通过优化、缓存、痕迹和重用,软件可以加快梯度计算。

    因为缓存痕迹的本质,并不是所有的功能都支持加速度。金宝app

    缓存过程可以缓存值,你可能期望改变,或者取决于外部因素。你必须照顾当加速功能:

    • 有输入随机或经常变化的价值观

    • 与经常变化的输出价值观

    • 生成随机数

    • 使用如果语句和循环和条件,取决于的值dlarray对象

    • 输入,处理,或者取决于处理吗

    • 读取数据从外部源(例如,通过使用一个数据存储或minibatchqueue对象)

    加速度对深度学习功能的更多信息,见深度学习功能定制培训循环的加速

    初始步长,作为一个积极的标量或指定[]

    如果InitialStepSize[],那么函数将自动确定初始步长间隔的基础上集成和颂歌的输出函数对应于初始条件。

    数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

    最大的步长,作为一个积极的标量或指定[]

    如果MaxStepSize[],那么这个函数使用积分的间隔大小的十分之一。

    数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

    相对误差容限,指定为一个积极的标量。相对公差适用于解决方案的所有组件。

    数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

    绝对误差容限,指定为一个积极的标量。相对公差适用于解决方案的所有组件。

    数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

    输出参数

    全部折叠

    解决方案由神经颂歌的倍tspan(2:结束),返回dlarray对象与相同的底层数据类型Y0

    如果Y0是一个格式化的dlarraytspan包含两个元素Y有相同的格式吗Y0。如果Y0不是一个格式化的dlarraytspan包含两个元素Y是一个非格式化dlarray顺序相同的维度Y0

    如果Y0是一个格式化的dlarraytspan包含两个以上的元素Y有相同的格式吗Y0与一个额外的附加“T”维度(时间)。如果Y0不是一个格式化的dlarraytspan包含两个以上的元素Y是一个非格式化dlarray顺序相同的维度Y0与一个额外的附加维度对应时间。

    算法

    神经常微分方程(ODE)操作返回指定的颂歌的解决方案。特别是,给定一个输入,神经颂歌操作输出ODE的数值解 y = f ( t , y , θ ) 时间范围(t0,t1)和初始条件y (t0)= y0,在那里ty表示输入和ODE函数θ是一组可学的参数。通常,初始条件y0是另一个深度学习的网络输入或输出操作。

    dlode45函数使用数值函数,它是基于显式龙格-库塔公式(4、5),Dormand-Prince一对。这是一个单步,计算y (tn),它只需要立即的解决方案之前的时间点,y (tn - 1)[2][3]

    引用

    [1],瑞奇·t·Q。,Yulia Rubanova, Jesse Bettencourt, and David Duvenaud. “Neural Ordinary Differential Equations.” Preprint, submitted June 19, 2018. https://arxiv.org/abs/1806.07366.

    [2]Dormand, j . R。,P. J. Prince. “A Family of Embedded Runge-Kutta Formulae.”计算和应用数学杂志》上6,不。1(1980年3月):19-26。https://doi.org/10.1016/0771 - 050 x (80) 90013 - 3。

    [3]Shampine,劳伦斯F。和马克·w·Reichelt表示。《MATLAB颂歌套件。“暹罗期刊在科学计算18日,不。1(1997年1月):22页。https://doi.org/10.1137/S1064827594276424。

    版本历史

    介绍了R2021b

    全部展开