dlarray
用于自定义的深度学习数组
说明
深度学习数组使用可选的数据格式标签存储数据,以用于自定义训练循环,并通过自动微分使函数能够计算和使用导数。
提示
对于大多数深度学习任务,您可以使用预训练神经网络,并使其适应您自己的数据。有关说明如何使用迁移学习来重新训练卷积神经网络以对一组新图像进行分类的示例,请参阅Retrain Neural Network to Classify New Images。您也可以使用 trainnet
和 trainingOptions
函数从头创建和训练神经网络。
如果 trainingOptions
函数没有提供您的任务所需的训练选项,则您可以使用自动微分创建自定义训练循环。要了解详细信息,请参阅Train Network Using Custom Training Loop。
如果 trainnet
函数没有提供您的任务所需的损失函数,您可以将 trainnet
的自定义损失函数指定为函数句柄。对于需要比预测值和目标值更多输入的损失函数(例如,需要访问神经网络或额外输入的损失函数),请使用自定义训练循环来训练模型。要了解详细信息,请参阅Train Network Using Custom Training Loop。
如果 Deep Learning Toolbox™ 没有提供您的任务所需的层,则您可以创建一个自定义层。要了解详细信息,请参阅定义自定义深度学习层。对于无法指定为由层组成的网络的模型,可以将模型定义为函数。要了解详细信息,请参阅Train Network Using Model Function。
有关对哪项任务使用哪种训练方法的详细信息,请参阅Train Deep Learning Model in MATLAB。
创建对象
描述
输入参量
输出参量
用途
使用 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 | 对输入数据的每个通道 ('C' ) 应用 softmax 激活。 | 'C' |
这些函数要求每个维度都有一个标签。您可以通过以格式化 dlarray
的形式提供第一个输入,或通过使用函数的 'DataFormat'
名称-值参量,来指定维度标签格式。
dlarray
强制应用 'SCBTU'
的维度标签顺序。这种强制操作消除了运算中的多义性语义,此类语义会隐式匹配输入之间的标签。dlarray
还强制要求维度标签 'C'
、'B'
和 'T'
每个最多只能出现一次。使用这些维度标签的函数接受每个标签最多有一个维度。
dlarray
提供的函数可用于获取与 dlarray
相关联的数据格式 (dims
)、删除数据格式 (stripdims
) 以及获取与特定维度标签相关联的维度 (finddim
)。
有关 dlarray
如何处理格式的详细信息,请参阅Notable dlarray Behaviors。
对象函数
avgpool | Pool data to average values over spatial dimensions |
batchnorm | Normalize data across all observations for each channel independently |
crossentropy | Cross-entropy loss for classification tasks |
indexcrossentropy | Index cross-entropy loss for classification tasks |
dims | dlarray 对象的数据格式 |
dlconv | Deep learning convolution |
dldivergence | Divergence of deep learning data |
dlgradient | Compute gradients for custom training loops using automatic differentiation |
dljacobian | Jacobian matrix deep learning operation |
dllaplacian | Laplacian of deep learning data |
dltranspconv | Deep learning transposed convolution |
extractdata | 从 dlarray 中提取数据 |
finddim | Find dimensions with specified label |
fullyconnect | Sum all weighted input data and apply a bias |
gru | Gated recurrent unit |
leakyrelu | Apply leaky rectified linear unit activation |
lstm | Long short-term memory |
maxpool | Pool data to maximum value |
maxunpool | Unpool the output of a maximum pooling operation |
mse | Half mean squared error |
relu | 应用修正线性单元激活 |
sigmoid | 应用 sigmoid 激活 |
softmax | Apply softmax activation to channel dimension |
stripdims | Remove dlarray data format |
dlarray
还允许执行数值、矩阵和其他运算的函数。请参阅List of Functions with dlarray Support中的完整列表。
示例
提示
dlgradient
调用必须在函数内部。要获取梯度的数值,您必须使用dlfeval
计算函数,并且函数的参量必须是dlarray
。请参阅Use Automatic Differentiation In Deep Learning Toolbox。为了能够正确计算梯度,
dlfeval
调用的函数必须仅使用dlarray
支持的函数。请参阅List of Functions with dlarray Support。