要创建本身定义层图的自定义层,可以声明dlnetwork
对象中的可学习参数属性(可学习)
层定义的节。此方法称为网络的作文。您可以使用网络组合来:
创建一个代表可学习层块的自定义层,例如残余块。
创建具有控制流的网络,例如,具有可以根据输入数据动态更改的部分的网络。
创建具有循环的网络,例如,具有将输出反馈回自身的部分的网络。
对于既有可学习参数又有状态参数的嵌套网络,例如具有批处理规范化或LSTM层的网络,在属性(可学的,国家)
图层定义的一部分。
此示例演示如何定义包含可学习内容的自定义层dlnetwork
对象,看到定义嵌套深度学习层.
有关显示如何使用嵌套层训练网络的示例,请参见用嵌套层训练深度学习网络.
dlnetwork
培训对象可以创建自定义图层,并允许软件自动初始化任何嵌套图层的可学习参数dlnetwork
完全构造父网络后的对象。嵌套网络的自动初始化意味着您无需跟踪传递到包含嵌套网络的每个自定义层的输入的大小和形状dlnetwork
要利用自动初始化,必须指定构造函数创建未初始化的dlnetwork
对象。创建未初始化的dlnetwork
对象,设置初始化
名称-值选项为false。您不需要指定输入层,因此您不需要为该层指定输入大小。
作用层= myLayer%初始化层属性。...%定义网络。层= [%网络层到这里。];层。网络= dlnetwork (lgraph“初始化”,假);结束
初始化父网络时,任何嵌套网络的可学习参数dlnetwork
对象同时初始化。可学习参数的大小取决于自定义层输入数据的大小。软件通过嵌套网络传播数据,并根据传播的大小和嵌套网络层的初始化属性自动初始化参数。
如果父网络使用trainNetwork
函数,然后是任何嵌套的dlnetwork
对象在调用时初始化trainNetwork
.如果父网络为dlnetwork
,然后是任何嵌套dlnetwork
对象在父网络构造时初始化(如果父网络dlnetwork
在构造时初始化)或在使用初始化
函数与父网络(如果父网络dlnetwork
未在构造时初始化)。
如果不想使用自动初始化,可以使用已初始化的嵌套网络构造自定义层。在这种情况下,嵌套网络在父网络之前初始化。若要在构造时初始化嵌套网络,必须手动指定嵌套网络的任何输入的大小。这需要s手动指定嵌套网络的任何输入的大小。您可以通过使用输入层或通过向dlnetwork
构造函数。属性的任何输入的大小必须指定dlnetwork
对象,创建图层时可能需要指定输入大小。要帮助确定图层输入的大小,可以使用analyzeNetwork
功能并检查前一层激活的大小。
有些层在训练和预测过程中表现不同。例如,dropout层只在训练期间执行dropout,在预测期间没有影响。一个层使用两个函数之一来执行向前传递:预测
或向前地
.如果前向传递是在预测时间,则层使用预测
函数。如果向前传递是在训练时间,那么层使用向前地
函数。如果预测时间和训练时间不需要两个不同的函数,则可以省略向前地
在这种情况下,层使用预测
在训练时间。
当实现预测
和向前地
功能的自定义层,以确保层中的dlnetwork
对象的行为正确时,请使用预测
和向前地
功能dlnetwork
对象。
自定义层与学习dlnetwork
对象不支持自定义向后函数。金宝app
的内存输出参数仍然必须赋值向前地
函数。
这个示例代码展示了如何使用预测
和向前地
功能与dlnetwork
输入。
作用Z=预测(层,X)%将输入数据转换为格式化的dlarray。X = dlarray (X,“SSCB”);%使用网络进行预测。dlnet = layer.Network;Z =预测(dlnet X);%带尺寸标注标签。Z = stripdims (Z);结束作用Z =前进(层,X)%将输入数据转换为格式化的dlarray。X = dlarray (X,“SSCB”);%使用网络转发。dlnet=layer.Network;Z=正向(dlnet,X);%带尺寸标注标签。Z = stripdims (Z);结束
如果dlnetwork
对象在训练和预测期间不会有不同的行为,那么您可以省略forward函数预测
函数在训练。
如果层转发功能完全支持金宝appdlarray
对象,则层与GPU兼容。否则,要与GPU兼容,层函数必须支持类型为的输入和返回输出金宝appgpuArray
(并行计算工具箱).
许多MATLAB®内置函数支持金宝appgpuArray
(并行计算工具箱)和dlarray
输入参数。获取支持的函数列表金宝appdlarray
对象,请参见支持dlarray的函数列表金宝app.有关在GPU上执行的函数列表,请参见在GPU上运行MATLAB函数(并行计算工具箱).要使用GPU进行深度学习,您还必须有支持的GPU设备。金宝app有关支持的设备的信息,请参见金宝appGPU版金宝app本支持(并行计算工具箱).有关在MATLAB中使用gpu的更多信息,请参见MATLAB中的GPU计算(并行计算工具箱).
checkLayer
|trainNetwork
|培训选项
|analyzeNetwork
|dlnetwork