Operator Library: Base
借助 CastKernel 算子,您可以重新组织输入数据的 Parallelism 和 kernel size。 如需重新解释,请更改输出链路处的 kernel size。 例如,某个输入链路配置了两个 kernel row、两个 kernel column 以及 4 的 Parallelism。 利用 CastKernel 算子,您可以将其解释为 Parallelism 为 1 时的 4 个 kernel row 和 4 个 kernel column,或者解释为 Parallelism 为 8 时的 1 个 kernel row 和 2 个 kernel column 等。 CastKernel 算子的约束条件是:输入链路和输出链路的 kernel row、kernel column 与 Parallelism 的乘积必须保持一致。
有关使用 kernel 的实用指导,请参阅 Working with Kernels 教程主题。 有关 Parallelism 的实用指导,请参阅 Parallelism 教程主题。
以下示例说明了算子执行的 kernel 配置和 Parallelism 转换。 插图下方的伪代码还描述了转换模式。
示例 1:将 kernel size(col x row)3x1 转换为 kernel size 1x3,同时保持 Parallelism 为 2:

示例 2:将 Parallelism 2 和 kernel size(col x row)2x3 转换为 Parallelism 3 和 kernel size 2x2:

示例 3:将 Parallelism 1 和 kernel size(col x row)3x2 转换为 Parallelism 6 和 kernel size 1x1:

该算子会更改图像的宽度。
映射遵循以下伪代码:
pi = 0
ri = 0
ci = 0
for p in 0 to P-1
for r in 0 to R-1
for c in 0 to C-1
O[p][r][c] = I[pi][ri][ci]
ci = ci + 1
if ci >= Ci then ci = 0, ri = ri + 1
if ri >= Ri then ri = 0, pi = pi + 1
该伪代码的含义如下:
| 伪代码 | 含义 |
|---|---|
| p | Output-Parallel-Index |
| pi | Input-Parallel-Index |
| r | Output-Kernel-Row-Index |
| ri | Input-Kernel-Row-Index |
| c | Output-Kernel-Column-Index |
| co | Output-Kernel-Column-Index |
| Pi | Input-Parallelism |
| P | Output-Parallelism |
| Ri | Input-Kernel-Rows |
| R | Input-Kernel-Columns |
| Ci | Input-KernelColumns |
| C | OutputKernelColumns |
表 32. 伪代码说明
CastKernel 算子的功能也可以通过组合以下算子来实现:SplitKernel、MergeKernel、SplitParallel 和 MergeParallel:

在本例中,将 Parallelism 为 3、包含 4 个 Kernel Columns 和 2 个 Kernel Rows 的输入配置重新组织为 Parallelism 为 4、包含 2 个 Kernel Columns 和 3 个 Kernel Rows。通过相应地配置输出连接,使用 CastKernel 算子也可以达到同样的效果:

以下示例展示了 CastKernel 算子的使用方法:




由输入 Parallelism 决定
、输入内核大小
以及输出内核大小
:

表示 kernel rows 且
表示 kernel columns。
和输入 Parallelism
决定,计算公式如下:

上一页

