代码生成的dlarray
深度学习阵列使用可选的数据格式标签存储数据,用于定制训练循环,并允许函数通过自动微分计算和使用导数。要了解关于自定义训练循环、自动区分和深度学习数组的更多信息,请参见<一个href="//www.ru-cchi.com/help/deeplearning/deep-learning-custom-training-loops.html" class="a">深度学习自定义训练循环(深度学习工具箱).
代码生成支持格式化和非格式化深度学习数组。dlarray
对象包含gpuArrays
也支持代码生成。当您使用带有CPU和GPU代码生成的深度学习阵列时,请遵守以下限制:
定义dlarray
对于代码生成
对于代码生成,请使用<一个href="//www.ru-cchi.com/help/deeplearning/ref/dlarray.html">dlarray
(深度学习工具箱)函数创建深度学习数组。例如,假设你有一个预先训练的<一个href="//www.ru-cchi.com/help/deeplearning/ref/dlnetwork.html">dlnetwork
(深度学习工具箱)中的网络对象。mynet.mat
MAT-file。为了预测该网络的响应,在MATLAB中创建一个入口点函数®.
有两种可能:
请注意
对于代码生成,dlarray
的输入预测
的方法dlnetwork
对象必须是单
数据类型。
设计1(不推荐)
在本设计实例中,输入输出到入口点函数,喷火
的dlarray
类型。这种类型的入口点函数不推荐用于代码生成,因为在MATLAB中,dlarray
强制标签的顺序“SCBTU”
.在生成MEX代码时复制此行为。但是,对于静态、动态库或可执行程序等独立代码生成,数据格式遵循fmt
论点的dlarray
对象。因此,如果入口点函数的输入或输出是dlarray
对象和它的标签顺序不是“SCBTU”
,那么MATLAB环境和独立代码之间的数据布局将有所不同。
函数dlOut = foo (dlIn)持续的dlnet;如果isempty(dlnet) dlnet = code . loaddeeplearningnetwork (“mynet.mat”);结束dlOut = predict(dlnet, dlIn);结束
设计2(推荐)
在本设计实例中,输入输出为喷火
的基本数据类型和dlarray
对象在函数内创建。的<一个href="//www.ru-cchi.com/help/deeplearning/ref/dlarray.extractdata.html">extractdata
(深度学习工具箱)的方法dlarray
对象中返回的数据dlarray
国防后勤局
作为的输出喷火
.输出一个
中的数据类型与基础数据类型相同国防后勤局
.
相比设计1
,这种入口点设计有以下优点:
与独立代码生成工作流(如静态、动态库或可执行程序)更容易集成。
的输出的数据格式
extractdata
函数具有相同的顺序(“SCBTU”
)在MATLAB环境和生成的代码。提高MEX工作流程的性能。
简化模型®工作流使用MATLAB函数作为Simulink本身不支持的
dlarray
对象。
函数a = foo(in) dlIn = dlarray(in)SSC的);持续的dlnet;如果isempty(dlnet) dlnet = code . loaddeeplearningnetwork (“mynet.mat”);结束dlA = predict(dlnet, dlIn);一个= extractdata (dlA);结束
看一个例子dlnetwork
而且dlarray
使用GPU Coder™,参见<一个href="//www.ru-cchi.com/help/gpucoder/ug/code-generation-for-vae-network.html" class="a">使用变分自动编码器在NVIDIA GPU上生成数字图像.
dlarray
支持代码生成的对象函数
对于代码生成,您只能使用本表中列出的深度学习数组对象函数。
|
尺寸标签 |
|
从中提取数据 |
|
查找具有指定标签的尺寸 |
|
删除 |
深度学习工具箱功能dlarray
代码生成的支持
深度学习操作
函数 | 描述 |
---|---|
fullyconnect (深度学习工具箱) |
完全连接操作将输入乘以一个权重矩阵,然后添加一个偏置向量。 |
乙状结肠 (深度学习工具箱) |
sigmoid激活操作将sigmoid函数应用于输入数据。 |
softmax (深度学习工具箱) |
softmax激活操作将softmax函数应用于输入数据的通道维度。 |
MATLAB函数dlarray
代码生成的支持
一元Element-wise功能
函数 | 笔记和局限性 |
---|---|
腹肌 |
输出 |
量化 |
输出 |
因为 |
|
cosh |
|
床 |
|
csc |
|
经验值 |
|
日志 |
|
证券交易委员会 |
输出 |
标志 |
|
罪 |
|
sinh |
|
√6 |
|
棕褐色 |
输出 |
双曲正切 |
|
uplus ,+ |
|
uminus ,- |
|
小块土地 |
二进制Element-wise运营商
还原功能
极值函数
函数 | 笔记和局限性 |
---|---|
装天花板 |
输出 |
每股收益 |
|
修复 |
输出 |
地板上 |
输出 |
马克斯 |
|
最小值 |
|
轮 |
|
其他的数学操作
函数 | 笔记和局限性 |
---|---|
结肠 ,: |
|
mtimes ,* |
|
pagemtimes |
|
逻辑运算
函数 | 笔记和局限性 |
---|---|
而且 ,& |
如果两个 |
情商 ,= = |
如果两个 |
通用电气 ,> = |
|
gt ,> |
|
勒 ,< = |
|
lt ,< |
|
不 ,~ = |
|
或 ,| |
如果两个 |
xor |
大小操作函数
函数 | 笔记和局限性 |
---|---|
重塑 |
输出 对于代码生成,尺寸尺寸必须是固定的。 |
挤压 |
二维 |
repelem |
如果您使用 如果您使用 |
repmat |
输出 |
换位操作
函数 | 笔记和局限性 |
---|---|
ctranspose ,' |
如果输入 |
交换 |
如果输入 对于代码生成,维度顺序必须是固定的大小。 |
ipermute |
如果输入 对于代码生成,维度顺序必须是固定的大小。 |
转置 ,.' |
如果输入 |
连接功能
转换函数
函数 | 笔记和局限性 |
---|---|
投 |
|
双 |
输出是 |
逻辑 |
输出是dlarray 包含类型的数据逻辑 . |
单 |
输出是dlarray 包含类型的数据单 . |
比较函数
数据类型和值标识函数
大小识别功能
函数 | 笔记和局限性 |
---|---|
iscolumn |
这个函数返回真正的 对于一个dlarray 这是一个列向量,其中除第一个维外的每个维都是单维。例如,3 × 1 × 1dlarray 是列向量。 |
ismatrix |
这个函数返回真正的 为dlarray 只有两个维度的对象dlarray 对象,其中除前两个维度外的每个维度都是单例的。例如,3 × 4 × 1dlarray 是一个矩阵。 |
isrow |
这个函数返回真正的 对于一个dlarray 这是一个行向量,除第二个外的每一个维都是单维的。例如,1 × 3 × 1dlarray 是行向量。 |
isscalar |
N/A |
isvector |
这个函数返回真正的 对于一个dlarray 这是行向量或列向量。请注意,isvector 不考虑1 × 1 × 3吗dlarray 是一个向量。 |
长度 |
N/A |
ndims |
如果输入 |
元素个数 |
N/A |
大小 |
如果输入 |
创造者的功能
索引
代码生成支持索引dlarray
对象和显示以下行为:
如果你设置
海底(idx1,…,idxn) = dlX
,然后海底
而且dlX
必须与任务兼容。数据的大小不能改变。不支持越界赋值操作。
赋值语句不能添加或删除
U
标签。
类的部分不支持删除
dlarray
对象的使用dlX (idx1,…,idxn) = []
.
另请参阅
对象
相关的例子
更多关于
- dlarray代码生成的限制
- 定义自定义训练循环,损失函数和网络(深度学习工具箱)
- 使用自定义训练循环训练网络(深度学习工具箱)
- 使用dlnetwork对象进行预测(深度学习工具箱)