create_dl_layer_poolingT_create_dl_layer_poolingCreateDlLayerPoolingCreateDlLayerPoolingcreate_dl_layer_pooling创建深度学习层池化(算子)

名称

create_dl_layer_poolingT_create_dl_layer_poolingCreateDlLayerPoolingCreateDlLayerPoolingcreate_dl_layer_pooling — 创建池化层。

签名

create_dl_layer_pooling( : : DLLayerInput, LayerName, KernelSize, Stride, Padding, Mode, GenParamName, GenParamValue : DLLayerPooling)

Herror T_create_dl_layer_pooling(const Htuple DLLayerInput, const Htuple LayerName, const Htuple KernelSize, const Htuple Stride, const Htuple Padding, const Htuple Mode, const Htuple GenParamName, const Htuple GenParamValue, Htuple* DLLayerPooling)

void CreateDlLayerPooling(const HTuple& DLLayerInput, const HTuple& LayerName, const HTuple& KernelSize, const HTuple& Stride, const HTuple& Padding, const HTuple& Mode, const HTuple& GenParamName, const HTuple& GenParamValue, HTuple* DLLayerPooling)

HDlLayer HDlLayer::CreateDlLayerPooling(const HString& LayerName, const HTuple& KernelSize, const HTuple& Stride, const HTuple& Padding, const HString& Mode, const HTuple& GenParamName, const HTuple& GenParamValue) const

HDlLayer HDlLayer::CreateDlLayerPooling(const HString& LayerName, const HTuple& KernelSize, const HTuple& Stride, const HString& Padding, const HString& Mode, const HString& GenParamName, const HString& GenParamValue) const

HDlLayer HDlLayer::CreateDlLayerPooling(const char* LayerName, const HTuple& KernelSize, const HTuple& Stride, const char* Padding, const char* Mode, const char* GenParamName, const char* GenParamValue) const

HDlLayer HDlLayer::CreateDlLayerPooling(const wchar_t* LayerName, const HTuple& KernelSize, const HTuple& Stride, const wchar_t* Padding, const wchar_t* Mode, const wchar_t* GenParamName, const wchar_t* GenParamValue) const   ( Windows only)

static void HOperatorSet.CreateDlLayerPooling(HTuple DLLayerInput, HTuple layerName, HTuple kernelSize, HTuple stride, HTuple padding, HTuple mode, HTuple genParamName, HTuple genParamValue, out HTuple DLLayerPooling)

HDlLayer HDlLayer.CreateDlLayerPooling(string layerName, HTuple kernelSize, HTuple stride, HTuple padding, string mode, HTuple genParamName, HTuple genParamValue)

HDlLayer HDlLayer.CreateDlLayerPooling(string layerName, HTuple kernelSize, HTuple stride, string padding, string mode, string genParamName, string genParamValue)

def create_dl_layer_pooling(dllayer_input: HHandle, layer_name: str, kernel_size: Sequence[int], stride: Sequence[int], padding: MaybeSequence[Union[str, int]], mode: str, gen_param_name: MaybeSequence[str], gen_param_value: MaybeSequence[Union[int, float, str]]) -> HHandle

描述

算子 create_dl_layer_poolingcreate_dl_layer_poolingCreateDlLayerPoolingCreateDlLayerPoolingCreateDlLayerPoolingcreate_dl_layer_pooling 创建一个池化层,其句柄通过 DLLayerPoolingDLLayerPoolingDLLayerPoolingDLLayerPoolingDLLayerPoolingdllayer_pooling 返回。

参数 DLLayerInputDLLayerInputDLLayerInputDLLayerInputDLLayerInputdllayer_input 确定输入层,并期望层句柄作为值。

参数 LayerNameLayerNameLayerNameLayerNamelayerNamelayer_name 用于设置单个层的名称。请注意,若使用 create_dl_modelcreate_dl_modelCreateDlModelCreateDlModelCreateDlModelcreate_dl_model 创建模型,则创建网络中的每个层必须具有唯一名称。

参数 KernelSizeKernelSizeKernelSizeKernelSizekernelSizekernel_size 指定滤波核在widthheight 维度上的尺寸。

参数 StrideStrideStrideStridestridestride 指定滤波器的偏移方式。

KernelSizeKernelSizeKernelSizeKernelSizekernelSizekernel_sizeStrideStrideStrideStridestridestride 的取值方式可设置为

参数 PaddingPaddingPaddingPaddingpaddingpadding 决定填充区域,即在处理后的输入图像边界附加多少个值为 0 的像素。支持的取值为:

池化层的输出尺寸由以下公式给出 因此我们使用以下参数: :输出宽度, :输入宽度, :添加到输入图像左/上的像素数,以及 :添加到输入图像右/下的像素数。

参数 ModeModeModeModemodemode 指定了池化操作的模式。支持的模式包括:

'average'"average""average""average""average""average"

最终像素值为滤波器中所有像素值的平均值。

'maximum'"maximum""maximum""maximum""maximum""maximum"

最终像素值为滤波器中所有像素值的最大值。

'global_average'"global_average""global_average""global_average""global_average""global_average"

'average'"average""average""average""average""average" 模式相同,但无需知晓输入的空间尺寸,可通过 KernelSizeKernelSizeKernelSizeKernelSizekernelSizekernel_size 参数定义所需输出维度。例如,若需返回输入所有像素值的平均值,则将 KernelSizeKernelSizeKernelSizeKernelSizekernelSizekernel_size 设为 1,输出 widthheight 均为 1。内部使用的核尺寸和步长按以下方式计算:

  • KernelSizeKernelSizeKernelSizeKernelSizekernelSizekernel_size 为输入维度的因数:内部使用的核尺寸与步长均设为

  • KernelSizeKernelSizeKernelSizeKernelSizekernelSizekernel_size 非输入维度的因数:内部使用的核尺寸和步长计算取决于通用参数 'global_pooling_mode'"global_pooling_mode""global_pooling_mode""global_pooling_mode""global_pooling_mode""global_pooling_mode"

    'overlapping'"overlapping""overlapping""overlapping""overlapping""overlapping"

    内部使用的 设置为 。随后计算内部使用的核尺寸为 。这将导致核重叠,但整个输入图像都会被纳入输出计算。

    'non_overlapping'"non_overlapping""non_overlapping""non_overlapping""non_overlapping""non_overlapping"

    内部使用的核尺寸与步长均设为相同值 。这将形成非重叠的池化核,但计算输出时可能忽略输入图像右侧或底部边界部分。此模式下因舍入误差,输出尺寸未必等于 KernelSizeKernelSizeKernelSizeKernelSizekernelSizekernel_size

    'adaptive'"adaptive""adaptive""adaptive""adaptive""adaptive"

    在此模式下,对于输出像素 ,其对应输入池化区域的大小将自适应计算,其中 为输出行索引, 为列索引。第 行输出像素的池化区域行索引由 给出,此时采用 KernelSizeKernelSizeKernelSizeKernelSizekernelSizekernel_size 的高度值。列坐标计算原理相同。这意味着相邻池化区域可能存在尺寸差异,导致实现效率降低。但池化区域仅重叠一个像素,通常比 'global_pooling_mode'"global_pooling_mode""global_pooling_mode""global_pooling_mode""global_pooling_mode""global_pooling_mode"'overlapping'"overlapping""overlapping""overlapping""overlapping""overlapping" 模式重叠更少。输出计算将考虑整个输入图像。此模式下,PaddingPaddingPaddingPaddingpaddingpadding 参数必须设置为 'none'"none""none""none""none""none"

在此模式下,参数 StrideStrideStrideStridestridestride 将被忽略,并按上述描述在内部进行计算。

'global_maximum'"global_maximum""global_maximum""global_maximum""global_maximum""global_maximum"

与模式 'global_average'"global_average""global_average""global_average""global_average""global_average" 相同,但计算的是最大值而非平均值。

有关池化层的更多信息,请参阅 “分类解决方案指南”

支持以下泛型参数 GenParamNameGenParamNameGenParamNameGenParamNamegenParamNamegen_param_name 及其对应值 GenParamValueGenParamValueGenParamValueGenParamValuegenParamValuegen_param_value

'global_pooling_mode'"global_pooling_mode""global_pooling_mode""global_pooling_mode""global_pooling_mode""global_pooling_mode"

全局池化(ModeModeModeModemodemode'global_average'"global_average""global_average""global_average""global_average""global_average"'global_maximum'"global_maximum""global_maximum""global_maximum""global_maximum""global_maximum")时,用于计算内部使用的核大小和步长的模式。详见上文说明。若为非全局池化,该参数将设置为 'undefined'"undefined""undefined""undefined""undefined""undefined" 值。

默认值: 'overlapping'"overlapping""overlapping""overlapping""overlapping""overlapping"

'is_inference_output'"is_inference_output""is_inference_output""is_inference_output""is_inference_output""is_inference_output"

确定 apply_dl_modelapply_dl_modelApplyDlModelApplyDlModelApplyDlModelapply_dl_model 是否将此层的输出包含在字典 DLResultBatchDLResultBatchDLResultBatchDLResultBatchDLResultBatchdlresult_batch 中,即使未在 OutputsOutputsOutputsOutputsoutputsoutputs 中指定此层('true'"true""true""true""true""true")或不包含('false'"false""false""false""false""false")。

默认值: 'false'"false""false""false""false""false"

使用 create_dl_layer_poolingcreate_dl_layer_poolingCreateDlLayerPoolingCreateDlLayerPoolingCreateDlLayerPoolingcreate_dl_layer_pooling 算子创建的层,其特定参数可通过其他算子进行设置与检索。下表概述了可通过 set_dl_model_layer_paramset_dl_model_layer_paramSetDlModelLayerParamSetDlModelLayerParamSetDlModelLayerParamset_dl_model_layer_param 设置的参数,以及可通过 get_dl_model_layer_paramget_dl_model_layer_paramGetDlModelLayerParamGetDlModelLayerParamGetDlModelLayerParamget_dl_model_layer_paramget_dl_layer_paramget_dl_layer_paramGetDlLayerParamGetDlLayerParamGetDlLayerParamget_dl_layer_param 检索的参数。请注意,算子 set_dl_model_layer_paramset_dl_model_layer_paramSetDlModelLayerParamSetDlModelLayerParamSetDlModelLayerParamset_dl_model_layer_paramget_dl_model_layer_paramget_dl_model_layer_paramGetDlModelLayerParamGetDlModelLayerParamGetDlModelLayerParamget_dl_model_layer_param 需基于 create_dl_modelcreate_dl_modelCreateDlModelCreateDlModelCreateDlModelcreate_dl_model 创建的模型。

层参数 设置 获取
'global'"global""global""global""global""global"
'global_pooling_mode'"global_pooling_mode""global_pooling_mode""global_pooling_mode""global_pooling_mode""global_pooling_mode"
'input_layer'"input_layer""input_layer""input_layer""input_layer""input_layer" (DLLayerInputDLLayerInputDLLayerInputDLLayerInputDLLayerInputdllayer_input)
'kernel_size'"kernel_size""kernel_size""kernel_size""kernel_size""kernel_size" (KernelSizeKernelSizeKernelSizeKernelSizekernelSizekernel_size)
'name'"name""name""name""name""name" (LayerNameLayerNameLayerNameLayerNamelayerNamelayer_name)
'output_layer'"output_layer""output_layer""output_layer""output_layer""output_layer" (DLLayerPoolingDLLayerPoolingDLLayerPoolingDLLayerPoolingDLLayerPoolingdllayer_pooling)
'padding'"padding""padding""padding""padding""padding" (PaddingPaddingPaddingPaddingpaddingpadding)
'padding_type'"padding_type""padding_type""padding_type""padding_type""padding_type" (PaddingPaddingPaddingPaddingpaddingpadding)
'pooling_mode'"pooling_mode""pooling_mode""pooling_mode""pooling_mode""pooling_mode" (ModeModeModeModemodemode)
'shape'"shape""shape""shape""shape""shape"
'stride'"stride""stride""stride""stride""stride" (StrideStrideStrideStridestridestride)
'type'"type""type""type""type""type"
泛型层参数 设置 获取
'is_inference_output'"is_inference_output""is_inference_output""is_inference_output""is_inference_output""is_inference_output"
'num_trainable_params'"num_trainable_params""num_trainable_params""num_trainable_params""num_trainable_params""num_trainable_params"

执行信息

参数

DLLayerInputDLLayerInputDLLayerInputDLLayerInputDLLayerInputdllayer_input (输入控制)  dl_layer HDlLayer, HTupleHHandleHTupleHtuple (handle) (IntPtr) (HHandle) (handle)

输入层。

LayerNameLayerNameLayerNameLayerNamelayerNamelayer_name (输入控制)  string HTuplestrHTupleHtuple (string) (string) (HString) (char*)

输出层的名称。

KernelSizeKernelSizeKernelSizeKernelSizekernelSizekernel_size (输入控制)  number-array HTupleSequence[int]HTupleHtuple (integer) (int / long) (Hlong) (Hlong)

滤波核的宽度和高度。

默认值: [2,2]

StrideStrideStrideStridestridestride (输入控制)  number-array HTupleSequence[int]HTupleHtuple (integer) (int / long) (Hlong) (Hlong)

滤波器偏移的二维量。

默认值: [2,2]

PaddingPaddingPaddingPaddingpaddingpadding (输入控制)  number(-array) HTupleMaybeSequence[Union[str, int]]HTupleHtuple (string / integer) (string / int / long) (HString / Hlong) (char* / Hlong)

填充类型或特定填充尺寸。

默认值: 'none' "none" "none" "none" "none" "none"

建议值: 'none'"none""none""none""none""none", 'half_kernel_size'"half_kernel_size""half_kernel_size""half_kernel_size""half_kernel_size""half_kernel_size", 'implicit'"implicit""implicit""implicit""implicit""implicit"

ModeModeModeModemodemode (输入控制)  number HTuplestrHTupleHtuple (string) (string) (HString) (char*)

池化操作模式。

默认值: 'maximum' "maximum" "maximum" "maximum" "maximum" "maximum"

值列表: 'average'"average""average""average""average""average", 'global_average'"global_average""global_average""global_average""global_average""global_average", 'global_maximum'"global_maximum""global_maximum""global_maximum""global_maximum""global_maximum", 'maximum'"maximum""maximum""maximum""maximum""maximum"

GenParamNameGenParamNameGenParamNameGenParamNamegenParamNamegen_param_name (输入控制)  attribute.name(-array) HTupleMaybeSequence[str]HTupleHtuple (string) (string) (HString) (char*)

泛型输入参数名称。

默认值: []

值列表: 'global_pooling_mode'"global_pooling_mode""global_pooling_mode""global_pooling_mode""global_pooling_mode""global_pooling_mode", 'is_inference_output'"is_inference_output""is_inference_output""is_inference_output""is_inference_output""is_inference_output"

GenParamValueGenParamValueGenParamValueGenParamValuegenParamValuegen_param_value (输入控制)  attribute.value(-array) HTupleMaybeSequence[Union[int, float, str]]HTupleHtuple (string / integer / real) (string / int / long / double) (HString / Hlong / double) (char* / Hlong / double)

泛型输入参数值。

默认值: []

建议值: 'adaptive'"adaptive""adaptive""adaptive""adaptive""adaptive", 'non_overlapping'"non_overlapping""non_overlapping""non_overlapping""non_overlapping""non_overlapping", 'overlapping'"overlapping""overlapping""overlapping""overlapping""overlapping", 'true'"true""true""true""true""true", 'false'"false""false""false""false""false", 1.0, 0.9, 0.0

DLLayerPoolingDLLayerPoolingDLLayerPoolingDLLayerPoolingDLLayerPoolingdllayer_pooling (输出控制)  dl_layer HDlLayer, HTupleHHandleHTupleHtuple (handle) (IntPtr) (HHandle) (handle)

池化层。

模块

深度学习训练