set_dl_classifier_param
名称
set_dl_classifier_param —设置基于深度学习的分类器的参数。
签名
set_dl_classifier_param(:DLClassifierHandle,GenParamName,GenParamValue:)
描述
set_dl_classifier_param设置参数和超参数 GenParamName神经网络的DLClassifierHandle 到值GenParamValue。
预训练的分类器已针对其默认图像尺寸进行了训练,请参见read_dl_classifier。
网络体系结构允许不同的图像尺寸。但是,对于具有至少一个完全连接层的网络,此更改需要重新培训。没有完全连接的层的网络可以直接应用于不同的图像大小。然而,具有与分类器已经训练的尺寸不同的尺寸的图像可能显示出降低的分类精度。
GenParamName可以达到以下值:
'batch_size':
一批中的图像(和相应的标签)数,因此在训练的一次迭代中同时处理的图像数。有关更多详细信息,请参考train_dl_classifier_batch。此参数存储在预训练分类器中。默认情况下,设置“ batch_size”,以便可以在具有8 GB内存的设备上轻松地对多达100个类别的预训练分类器进行训练。因此,对于预训练的分类器,默认值如下所示:
预训练分类器 'batch_size'的默认值 'pretrained_dl_classifier_compact.hdl' 160 'pretrained_dl_classifier_enhanced.hdl' 96 'classs':
与要识别的对象类别相对应的标签元组。设置后,类名称的顺序保持不变。
'gpu':
在训练和推理运算符(GPU的标识train_dl_classifier_batch和 apply_dl_classifier被执行。每默认情况下,使用第一个可用的GPU。get_system与“cuda_devices”可以用来检索可用的GPU列表。在此列表中传递索引'gpu'。
'image_width':
网络将处理的图像的宽度。默认值由网络提供,请参见 read_dl_classifier。
'image_height':
网络将处理的图像的高度。默认值由网络提供,请参见 read_dl_classifier。
'image_num_channels':
网络将处理的图像通道数。可能是一个通道(灰度值图像)或三个通道(三通道图像)。默认值由网络提供,请参见 read_dl_classifier。更改为单通道映像会修改网络配置。此过程将删除某些图层中包含的颜色信息,并且该颜色信息不可逆。
'image_dimensions':
包含图像尺寸 'image_width','image_hight'和通道数 'image_num_channels'的元组。默认值由网络提供,请参见read_dl_classifier。关于通道数,值一(灰度值图像)或三(三通道图像)是可能的。更改为单通道映像会修改网络配置。此过程将删除某些图层中包含的颜色信息,并且该过程不可逆。
'learning_rate':
确定训练期间梯度影响的因子的初始值。有关更多详细信息,请参考train_dl_classifier_batch。默认情况下,“ learning_rate”设置为0.001。
'momentum:
当更新损失函数的参数时,超参数“动量”指定将先前的更新向量添加到当前更新向量的程度。有关更多详细信息,请参考train_dl_classifier_batch。默认情况下,“动量”设置为0.9。
'runtime:
定义将在其上执行操作符的设备。默认情况下,“运行时”设置为“ gpu”。
'cpu':
操作员apply_dl_classifier将在CPU上执行,而操作员train_dl_classifier_batch不可执行。
如果之前已经使用过GPU,则初始化CPU内存,如果有必要,将存储在GPU内存中的值移至CPU内存。
在“CPU”运行时使用的OpenMP为并行 apply_dl_classifier。默认情况下,使用所有可用于OpenMP运行时的线程。使用特定于线程的set_system 参数'tsp_thread_num'指定要使用的线程数。
'gpu':
GPU内存已初始化,并创建了相应的句柄。运算符apply_dl_classifier和 train_dl_classifier_batch将在GPU上执行。有关特定要求,请参阅《 HALCON 安装指南》。
'runtime_init':
如果使用“立即”调用,则会初始化GPU内存并创建相应的句柄。否则,将按需完成此操作,这可能导致首次调用apply_dl_classifier或 train_dl_classifier_batch的执行时间大大增加。如果随后调用set_dl_classifier_param更改了'gpu'或'batch_size',则会重新初始化GPU内存。
注意,如果在CPU上运行,则此参数无效,因此,如果将'runtime'设置为'cpu'。
'weight_prior':
用于损失函数 正则化的正则化参数。在分类器训练过程中存在过度拟合的情况下,正则化很有帮助。如果超参数'weight_prior'不为零,则将下面给出的正则化项添加到损失函数中(另请参见train_dl_classifier_batch)
此处,索引k遍历网络的所有权重,除了未归一化的偏差。正则项 通常会惩罚较大的权重,从而将权重推向零,从而有效地降低了模型的复杂性。简而言之:正则化倾向于使用更简单的模型,这些模型不太可能了解数据中的噪声并能更好地进行泛化。默认情况下,不使用任何正则化,即'weight_prior'设置为 0.0。如果分类器过度拟合数据,强烈建议为参数“ weight_prior”尝试不同的值 改善神经网络的泛化特性。选择其值是模型的泛化能力,过度拟合能力和不足拟合能力之间的权衡。如果太小,则模型可能会过拟合;如果太大,则模型可能会失去其拟合数据的能力,因为所有权重实际上都是零。为了找到的理想值 ,我们建议进行交叉验证,即对一系列值进行训练,然后选择会导致最佳验证错误的值。对于典型应用,我们建议以的对数刻度 测试“ weight_prior”的值。如果训练花费很长时间,则可以考虑对减少的数据量执行超参数优化。
有关基于深度学习的分类概念的说明,请参阅《深度学习/分类》一章的介绍。
注意
要成功设置'gpu'参数,需要cuDNN和cuBLAS,即将参数GenParamName'runtime '设置 为VarRef('gpu')或将GenParamName'gpu '设置。 有关更多详细信息,请参阅《安装指南》第深度学习要求。
执行信息
多线程类型:可重入(与非排他运算符并行运行)。
多线程作用域:全局(可以从任何线程调用)。
未经并行处理。
参量
基于深度学习的分类器的句柄。
通用参数的名称。
默认值: “类”
值列表:“ batch_size”,“ classes”,“ gpu”,“ image_dimensions”,“ image_height”,“ image_num_channels”,“ image_width”,“ learning_rate”,“ momentum”,“ runtime”,“ runtime_init”,“ weight_prior” '
通用参数的值。
默认值: ['class_1','class_2','class_3']
建议值: 1、2、3、50、0.001,“ cpu”,“ gpu”,“立即”
结果
如果参数有效,则运算符 set_dl_classifier_param返回值2(H_MSG_TRUE)。如有必要,将引发异常。
可能的前辈
可能的继任者
get_dl_classifier_param, apply_dl_classifier, train_dl_classifier_batch
也可以看看

