ConvolutionLayer *AddConvolution(Tensor *input, int32_t numOutputMap, Dims kernel, WeightsBuf weights, WeightsBuf bias) noexcept;
函数功能
向网络添加一个卷积层。
函数原型
ConvolutionLayer *AddConvolution(Tensor *input, int32_t numOutputMap, Dims kernel, WeightsBuf weights, WeightsBuf bias) noexcept;
约束说明
- input不可为空,数据类型必须是NCHW,维度为4维或5维,每一维都需要大于0,且H维度取值范围在[1, 500000],W维度取值范围在[1, 500000]。
- numOutputMap取值范围在[1, 4096]。
- kernel不可为空,四维输入时是卷积核的[H,W]维度,维度为二维,取值范围[1~100000, 1~100000];五维输入时是卷积核的[D,H,W]维度,维度为三维,取值范围[1~100000, 1~100000, 1~100000]。
- weights不可为空,weights的value不可为空,weights的count不可为0。
- 四维输入weights的count需要满足公式:weights.count = numOutputMap * (input -> GetDimensions() [1] / groupNum) * kernel[0] * kernel[1]。
- 五维输入weights的count需要满足公式:weights.count = numOutputMap * (input -> GetDimensions() [1] / groupNum) * kernel[0] * kernel[1] * kernel[2]。
- 如果bias不为空,bias的count需要与numOutputMap相同。
参数说明
参数名 |
输入/输出 |
说明 |
---|---|---|
input |
输入 |
卷积的输入张量。 |
numOutputMap |
输入 |
卷积的输出特征图的数量。 |
kernel |
输入 |
卷积核的HW维度或DHW维度。 |
weights |
输入 |
卷积核的权重。 |
bias |
输入 |
卷积的偏置权重。WeightsBuf{}表示没有偏置。 |
返回值说明
返回新的卷积层,如果添加失败则返回nullptr或抛出异常。
父主题: class Network