現在サポートされている演算子 - 2.5 日本語

Vitis AI ユーザー ガイド (UG1414)

Document ID
UG1414
Release Date
2022-06-15
Version
2.5 日本語
表 1. 現在サポートされている演算子
CNN での標準的な動作のタイプ パラメーター DPUCZDX8G_ISA1_B4096 (ZCU102、ZCU104) DPUCAHX8L_ISA0 (U50、U50LV、U280) DPUCVDX8G_ISA3_C32B3 (VCK190) DPUCAHX8H_ISA2_DWC 1 (U50、U55C、U50LV、U280) DPUCADF8H_ISA0 (U200、U250)  DPUCVDX8H_ISA1_F2W4_4PE 2 (VCK5000)
イントリンシクス パラメーター channel_parallel: 16

bank_depth: 2048

bank_num: 8

channel_parallel: 32

bank_depth: 4096

channel_parallel: 16

bank_depth: 8192

bank_num: 8

channel_parallel: 16

bank_depth: 2048

channel_parallel: 16

bank_depth: 8192

channel_parallel: 64

bank_depth: 2048

conv2d Kernel size w、h: [1, 16] w、h: [1, 16] w、h: [1, 16]

w * h * ceil(input_channel/2048) <= 64

w、h: [1, 16] w、h: [1, 16] w、h: [1, 16]
Strides w、h: [1, 8] w、h: [1, 4] w、h: [1, 8] w、h: [1, 4] w、h: [1, 8] w、h: [1, 4]
Dilation dilation * input_channel <= 256 * channel_parallel
Paddings pad_left、pad_right: [0, (kernel_w - 1) * dilation_w]
pad_top、pad_bottom: [0, (kernel_h - 1) * dilation_h]
In Size kernel_w * kernel_h * ceil(input_channel / channel_parallel) <= bank_depth
Out Size output_channel <= 256 * channel_parallel
Activation ReLU、LeakyReLU、ReLU6、Hard-Swish、Hard-Sigmoid ReLU、ReLU6 ReLU、LeakyReLU、ReLU6、Hard-Swish、Hard-Sigmoid ReLU、LeakyReLU、ReLU6 ReLU、LeakyReLU ReLU、LeakyReLU、ReLU6、Hard-Swish、Hard-Sigmoid
Group* (Caffe) group==1
depthwise-conv2d Kernel size w、h: [1, 256] w、h: [3] w、h: [1, 256] w、h: {1, 2, 3, 5, 7} サポートされない w、h: [1, 8]
Strides w、h: [1, 256] w、h: [1, 2] w、h: [1, 256] w、h: [1, 4] w、h: [1, 4]
dilation dilation * input_channel <= 256 * channel_parallel dilation * input_channel <= 256 * channel_parallel
Paddings pad_left、pad_right: [0, min((kernel_w - 1), 15) * dilation_w] pad_left、pad_right: [0, (kernel_w - 1) * dilation_w] pad_left、pad_right: [0, min((kernel_w-1), 15) * dilation_w] pad_left、pad_right: [0, (kernel_w - 1) * dilation_w] pad_left、pad_right: [0, (kernel_w - 1) * dilation_w]
pad_top、pad_bottom: [0, min((kernel_h - 1), 15) * dilation_h] pad_top、pad_bottom: [0, (kernel_h - 1) * dilation_h] pad_top、pad_bottom: [0, min((kernel_h-1), 15) * dilation_h] pad_top、pad_bottom: [0, (kernel_h - 1) * dilation_h] pad_top、pad_bottom: [0, (kernel_h - 1) * dilation_h]
In Size kernel_w * kernel_h * ceil(input_channel / channel_parallel) <= bank_depth kernel_w * kernel_h * ceil(input_channel / channel_parallel) <= bank_depth
Out Size output_channel <= 256 * channel_parallel output_channel <= 256 * channel_parallel
Activation ReLU、ReLU6、LeakyReLU、Hard-Swish、Hard-Sigmoid ReLU、ReLU6 ReLU、ReLU6、LeakyReLU、Hard-Swish、Hard-Sigmoid ReLU、ReLU6 ReLU、ReLU6
Group* (Caffe) group==input_channel group==input_channel
transposed-conv2d Kernel size kernel_w/stride_w, kernel_h/stride_h: [1, 16]
Strides
Paddings pad_left、pad_right: [0, kernel_w-1]
pad_top、pad_bottom: [0, kernel_h-1]
Out Size output_channel <= 256 * channel_parallel
Activation ReLU、LeakyReLU、ReLU6、Hard-Swish、Hard-Sigmoid ReLU、ReLU6 ReLU、LeakyReLU、ReLU6、Hard-Swish、Hard-Sigmoid ReLU、LeakyReLU、ReLU6 ReLU、LeakyReLU ReLU、LeakyReLU、ReLU6、Hard-Swish、Hard-Sigmoid
depthwise-transposed-conv2d Kernel size kernel_w/stride_w、kernel_h/stride_h: [1, 256] kernel_w/stride_w、kernel_h/stride_h: [3] kernel_w/stride_w、kernel_h/stride_h: [1, 256] kernel_w/stride_w、kernel_h/stride_h: {1,2, 3, 5, 7} サポートされない kernel_w/stride_w、kernel_h/stride_h: [1, 8]
Strides
Paddings pad_left、pad_right: [0, min((kernel_w-1), 15)] pad_left、pad_right: [1, kernel_w-1] pad_left、pad_right: [0, min((kernel_w-1),15)] pad_left、pad_right: [1, kernel_w-1] pad_left、pad_right: [1, kernel_w-1]
pad_top、pad_bottom: [0, min((kernel_h-1), 15)] pad_top、pad_bottom: [1, kernel_h-1] pad_top、pad_bottom: [0, min((kernel_h-1), 15)] pad_top、pad_bottom: [1, kernel_h-1] pad_top、pad_bottom: [1, kernel_h-1]
Out Size output_channel <= 256 * channel_parallel output_channel <= 256 * channel_parallel
Activation ReLU、ReLU6、LeakyReLU、Hard-Swish、Hard-Sigmoid ReLU、ReLU6 ReLU、ReLU6、LeakyReLU、Hard-Swish、Hard-Sigmoid ReLU、ReLU6 ReLU、ReLU6
max-pooling Kernel size w、h: [1, 256]

ceil(h/bank_num) * w <= bank_depth

w、h: {2, 3, 5, 7, 8} w、h: [1, 256]

ceil(h/bank_num) * w <= bank_depth

w、h: [1, 8] w、h: [1, 16] w、h: [1, 128]
Strides w、h: [1, 256] w、h: [1, 8] w、h: [1, 256] w、h: [1, 8] w、h: [1, 8] w、h: [1, 128]
Paddings pad_left、pad_right: [0, min((kernel_w-1), 15)] pad_left、pad_right: [1, kernel_w-1] pad_left、pad_right: [0, min((kernel_w-1), 15)] pad_left、pad_right: [1, kernel_w-1]
pad_top、pad_bottom: [0, min((kernel_h-1), 15)] pad_top、pad_bottom: [1, kernel_h-1] pad_top、pad_bottom: [0, min((kernel_h-1), 15)] pad_top、pad_bottom: [1, kernel_h-1]
Activation ReLU、ReLU6 サポートされない ReLU、ReLU6 サポートされない ReLU サポートされない
average-pooling Kernel size w、h: [1, 256]

ceil(h/bank_num) * w <= bank_depth

w、h: {2, 3, 5, 7, 8}

w==h

w、h: [1, 256]

ceil(h/bank_num) * w <= bank_depth

w、h: [1, 8]

w==h

w、h: [1, 16] w、h: [1, 128]

w==h

Strides w、h: [1, 256] w、h: [1, 8] w、h: [1, 256] w、h: [1, 8] w、h: [1, 8] w、h: [1, 128]
Paddings pad_left、pad_right: [0, min((kernel_w-1), 15)] pad_left、pad_right: [1, kernel_w-1] pad_left、pad_right: [0, min((kernel_w-1), 15)] pad_left、pad_right: [1, kernel_w-1]
pad_top、pad_bottom: [0, min((kernel_h-1), 15)] pad_top、pad_bottom: [1, kernel_h-1] pad_top、pad_bottom: [0, min((kernel_h-1), 15)] pad_top、pad_bottom: [1, kernel_h-1]
Activation ReLU、ReLU6 サポートされない ReLU、ReLU6 サポートされない ReLU サポートされない
eltwise type sum、prod sum sum、prod sum sum sum、prod
Input Channel input_channel <= 256 * channel_parallel
Activation ReLU ReLU ReLU ReLU ReLU ReLU、Hard-Sigmoid
concat ネットワーク固有の制限。機能マップのサイズ、量子化の結果およびコンパイラの最適化に関連します。
reorg Strides reverse==false : stride ^ 2 * input_channel <= 256 * channel_parallel

reverse==true : input_channel <= 256 * channel_parallel

pad In Size input_channel <= 256 * channel_parallel
Mode 「SYMMETRIC」 (「CONSTANT」パッド (値 = 0) はコンパイラの最適化プロセス中に隣接する演算子に融合される) 「SYMMETRIC」、「CONSTANT」 (すべてのパディング値は同一)
global pooling グローバル プーリングは、入力テンソル サイズに等しいカーネル サイズで一般的なプーリングとして処理されます。
InnerProduct、Fully Connected、Matmul これらの演算子は、conv2d 演算子に変換されます。
resize scale NEAREST: ceil(scale/bank_num) * scale * ceil(input_channel/channel_parallel) <= bank_depth

BILINEAR: 4-D 特徴マップの場合のみ利用できます。pad および depthwise-transposed-conv2d に変換されます。

TRILINEAR: 5-D 特徴マップの場合のみ利用できます。pad および transposed-conv3d に変換されます。

mode NEAREST、BILINEAR NEAREST、BILINEAR NEAREST、BILINEAR、TRILINEAR NEAREST、BILINEAR NEAREST、BILINEAR NEAREST、BILINEAR
conv3d kernel size サポートされない サポートされない w、h、d: [1, 16]

w * h * ceil(ceil(input_channel/16) * 16 * d / 512) <= 64

サポートされない サポートされない サポートされない
strides w、h、d: [1, 8]
paddings pad_left、pad_right: [0, kernel_w-1]

pad_top、pad_bottom: [0, kernel_h-1]

pad_front、pad_back: [0, kernel_d-1]

In size kernel_w * kernel_h * kernel_d * ceil(input_channel/channel_parallel) <= bank_depth
Out size output_channel <= 256 * channel_parallel
Activation ReLU、LeakyReLU、ReLU6、Hard-Swish、Hard-Sigmoid
depthwise-conv3d kernel size サポートされない サポートされない w、h: [1, 256]

d: [1, 16]

サポートされない サポートされない サポートされない
strides w、h: [1, 256]

d=1

paddings pad_left、pad_right: [0, min((kernel_w-1), 15)]

pad_top、pad_bottom: [0, min((kernel_h-1), 15)]

pad_front、pad_back: [0, min((kernel_d-1), 15)]

In size kernel_w * kernel_h * kernel_d * ceil(input_channel/channel_parallel) <= bank_depth
Out size output_channel <= 256 * channel_parallel
Activation ReLU、ReLU6
transposed-conv3d kernel size サポートされない サポートされない kernel_w/stride_w、kernel_h/stride_h, kernel_d/stride_d: [1, 16] サポートされない サポートされない サポートされない
strides
paddings pad_left、pad_right: [0, kernel_w-1]

pad_top、pad_bottom: [0, kernel_h-1]

pad_front、pad_back: [0, kernel_d-1]

Out size output_channel <= 256 * channel_parallel
Activation ReLU、LeakyReLU、ReLU6、Hard-Swish、Hard-Sigmoid
depthwise-transposed-conv3d kernel size サポートされない サポートされない kernel_w/stride_w、kernel_h/stride_h, kernel_d/stride_d: [1, 16] サポートされない サポートされない サポートされない
strides
paddings pad_left、pad_right: [0, min((kernel_w-1), 15)]

pad_top、pad_bottom: [0, min((kernel_h-1), 15)]

pad_front、pad_back: [0, min((kernel_d-1), 15)]

Out size output_channel <= 256 * channel_parallel
Activation ReLU、ReLU6
  1. DPUCAHX8H については、ここでは DPUCAHX8H_ISA2_DWC のみを示します。その他の IP の設定については、 『たたみ込みニューラル ネットワーク (CNN) 用 DPUCAHX8H 製品ガイド』 (PG367) を参照してください。
  2. DPUCVDX8H については、ここでは DPUCVDX8H_ISA1_F2W4_4PE のみを示します。その他の IP の設定については、『たたみ込みニューラル ネットワーク用 DPUCVDX8H LogiCORE IP』 (PG403) を参照してください。
  3. DPUCZDX8G については、ここでは DPUCZDX8G_ISA1_B4096 のみを示します。その他の IP の設定については、『Zynq UltraScale+ MPSoC 向け DPUCZDX8G』 (PG338) を参照してください。
  4. DPUCVDX8G については、ここでは DPUCVDX8G_ISA3_C32B3 のみを示します。その他の IP の設定については、『Versal ACAP 向け DPUCVDX8G 製品ガイド』 (PG389) を参照してください。