TensorFlow でサポートされる演算子 - 2.5 日本語

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

Document ID
UG1414
Release Date
2022-06-15
Version
2.5 日本語
表 1. TensorFlow でサポートされる演算子
TensorFlow XIR  DPU のインプリメンテーション 
OP の種類 属性 OP 名 属性
placeholder / inputlayer* shape data shape 入力データ用のメモリを割り当てます。 
data_type
const   const data const データ用のメモリを割り当てます。
  shape
  data_type
conv2d filter conv2d kernel たたみ込みエンジン。
strides   stride
    pad([0, 0, 0, 0])
padding   pad_mode(SAME または VALID)
dilations   dilation
conv2d* kernel_size: conv2d kernel
strides stride
padding pad([0, 0, 0, 0])
dilation_rate dilation
use_bias  
group group
depthwiseconv2dnative filter depthwise-conv2d kernel depthwise たたみ込みエンジン。
strides stride
explicit_paddings pad
padding pad_mode(SAME または VALID)
dilations dilation
conv2dbackpropinput / conv2dtranspose* filter transposed-conv2d kernel たたみ込みエンジン。
strides stride
  pad([0, 0, 0, 0])
padding pad_mode(SAME または VALID)
dilations dilation
spacetobacthnd + conv2d + batchtospacend block_shape conv2d dilation ザイリンクスが設定した特定の要件を満たす場合、Spacetobatch、Conv2d および Batchtospace はたたみ込みエンジンにマップされます。
padding pad
filter kernel
strides stride
padding pad_mode(SAME)
dilations dilation
block_shape  
crops  
matmul / dense*  transpose_a conv2d / matmul  transpose_a 等価な conv2d がハードウェア要件を満たし、DPU にマップできる場合、matmul は conv2d 動作に変換されます。 
transpose_b transpose_b
maxpool / maxpooling2d* / globalmaxpool2d* ksize maxpool2d kernel プーリング エンジン。元のプーリング演算子がグローバルな削減を必要とする場合、属性 global は TRUE に設定されます。 
strides stride
  pad([0, 0, 0, 0])
padding pad_mode(SAME または VALID)
  global
avgpool / averagepooling2d* / globalavgeragepooling2d* pool_size avgpool2d kernel プーリング エンジン。元のプーリング演算子がグローバルな削減を必要とする場合、属性 global は TRUE に設定されます。
strides stride
  pad([0, 0, 0, 0])
padding pad_mode(SAME または VALID)
  count_include_pad (false)
  count_include_invalid (true)
  global
mean  axis avgpool / reduction_mean  axis 等価な avgpool がハードウェア要件を満たし、DPU にマップできる場合、mean 動作は avgpool に変換されます。 
keep_dims keep_dims
relu   relu   アクティベーションは、convolution、add などの隣接する動作に融合されます。
relu6   relu6  
leakyrelu alpha leaky_relu alpha
fixneuron / quantizelayer* bit_width fix bit_width コンパイル中に float2fix と fix2float に分割され、float2fix および fix2float の動作は隣接する動作と融合されて粗粒度の動作に変換されます。
quantize_pos fix_point
  if_signed
  round_mode
identity   identity   identity は削除されます。
add、addv2   add   add が要素ごとの加算である場合、add は DPU の要素ごとの加算エンジンにマップされます。add がチャネルごとの加算である場合、add とたたみ込みなどの隣接する動作を融合できる可能性を探します。
mul   mul   mul の入力のうち 1 つが定数である場合、mul は depthwise たたみ込みエンジンにマップできます。2 つの入力が同じ形状である場合、mul は要素ごとの乗算として Misc Engine にマップできます。その他の mul 演算が特殊な演算子の組み合わせの一部である場合、この mul はその組み合わせに融合できます。それ以外の場合、mul は CPU にマップされます。
concatv2 / concatenate* axis concat axis 特殊な読み出しまたは書き込みストラテジとオンチップ メモリの慎重な割り当てにより、concat の結果生じるオーバーヘッドを低減します。
pad / zeropadding2d*  paddings pad  paddings 最初にコンパイラは「CONSTANT」パディングを隣接する動作 (たたみ込み、プーリングなど) に融合しようとします。このような演算子が存在しない場合でも、パディングの次元が 4 でハードウェア要件を満たしている場合、「CONSTANT」パディングを DPU にマップできます。「SYMMETRIC」パディングは DPU にマップされますが、「REFLECT」パディングは DPU でサポートされていません。 
mode mode
  constant_values
shape   shape   shape 動作は削除されます。
stridedslice begin strided_slice begin shape に関連する動作である場合、コンパイル中に削除されます。粗粒度の動作のコンポーネントである場合、隣接する動作と融合されます。それ以外の場合、CPU インプリメンテーションにコンパイルされます。
end end
strides strides
pack axis stack axis
neg   neg  
realdiv   div  
sub   sub  
prod  axis reduction_product  axis
keep_dims keep_dims
sum  axis reduction_sum  axis
keep_dims keep_dims
max  axis reduction_max  axis
keep_dims keep_dims
resizebilinear size resize size resize のモードが「BILINEAR」、align_corner=false、half_pixel_centers = false、size = 2、4、8 である場合、align_corner=false、half_pixel_centers = true、size = 2、4 は、DPU インプリメンテーション (pad+depthwise-転置された conv2d) に変換できます。resize のモードが「NEAREST」で size が整数である場合、resize は DPU インプリメンテーションにマップされます。
align_corners align_corners
half_pixel_centers half_pixel_centers
  mode="BILINEAR"
resizenearestneighbor size resize size
align_corners align_corners
half_pixel_centers half_pixel_centers
  mode="NEAREST"
upsample2d/upsampling2d* size resize scale
  align_corners
  half_pixel_centers
interpolation mode
reshape shape reshape shape reshape 動作に変換される場合があります。それ以外の場合、CPU インプリメンテーションにマップされます。
reshape* target_shape
transpose perm transpose order
squeeze axis squeeze axis
exp   exp   CPU インプリメンテーションにのみコンパイルされます。
softmax axis softmax axis
sigmoid   sigmoid  
square+ rsqrt+ maximum    l2_normalize  axis output = x / sqrt(max(sum(x ^ 2), epsilon)) は、XIR で l2_normalize に融合されます。
  epsilon
  1. 上記の TensorFlow の OP は、XIR でサポートされます。これらのすべての OP には、ツールチェーン内に CPU インプリメンテーションがあります。
  2. * が付いた演算子は、TensorFlow のバージョンが 2.0 より新しいことを示します。