サポートしている層の種類 - DigitalMediaProfessionals/dv-sdk GitHub Wiki
AI プロセッサがサポートしている層の種類は限られています。
以下の表では層の種類とAI プロセッサにおけるFPGA ブロックへのマッピングの簡単な紹介をします。
Caffe やKeras の各層のサポートの詳細については後ほど提供いたします。
層がサポートされておらず、カスタムレイヤとしても定義されてない場合、ネットワーク変換ツールはエラーメッセージを出力します。
層の種類 |
マッピング |
入力層 |
無視されます |
データ層 |
無視されます |
畳み込み層 |
畳み込み |
バッチ正則化層 |
畳み込み |
LRN 層 |
畳み込み。zia-firmware-c3-sd-100mhz/zia-firmware-c3-emmc-100mhz のバージョン7.0.20180215 以前で有効です。 |
スケール層 |
畳み込み |
Concat 層 |
畳み込み or SW 実装 |
Eltwise 層 |
畳み込み |
プーリング層 |
畳み込み* |
内積層 |
zia-firmware-c3-sd-100mhz/zia-firmware-c3-emmc-100mhz のバージョン7.0.20180215以前では全結合層です。 |
ReLU 層 |
畳み込み or 全結合 |
TanH 層 |
畳み込み or 全結合 |
Flatten 層 |
SW 実装 or 無視されます |
Reshape 層 |
無視されます |
ソフトマックス層 |
SW 実装 |
ドロップアウト層 |
無視されます |
*注: プーリング層自体は層とみなされません。
プーリング層が既存の畳み込み層へと統合できない場合、畳み込みが無効化されプーリングのパラメータが設定された追加の畳み込み層が作られます。
注:入力サイズが指定されていないネットワークを変換することはできません。
Caffe の層のサポート
この節ではCaffe フレームワークのためのサポートされた層のリストを紹介する。
以下の表では、サポート
列は現在ネットワーク変換ツールによりサポートされていることを示し、将来
列はその層がAI プロセッサによりサポートされているが、ネットワーク変換ツールが対応してないこと、もしくはのちのバージョンでサポートされることを示します。
Caffe vision layer support
グループ |
サポート |
制限 |
Convolution |
:heavy_check_mark: |
最大カーネルサイズは 7x7 |
Pooling |
:heavy_check_mark: |
確率的プーリングはサポートされていません |
Spatial Pyramid Pooling (SSP) |
:x: |
|
Crop |
:x: |
|
Upsample |
:heavy_check_mark: |
サイズ2 でストライド2 、nearest neighbor の設定のみサポートしています |
Deconvolution |
:heavy_check_mark: |
zia-firmware-c3-emmc/zia-firmware-c3-sd のバージョン7.0.20190410 以降でサポートしています。Dilated Deconvolution はサポートしていません。 |
Im2Col |
:x: |
|
Caffe recurrent layer support
グループ |
サポート |
制限 |
Recurrent |
:x: |
|
RNN |
:x: |
|
Long Short Term Memory (LSTM) |
:x: |
|
Caffe common layer support
グループ |
サポート |
制限 |
Inner product |
:heavy_check_mark: |
すべてのパラメータがサポートされているわけではありません。最大入力サイズは16384 です。 |
Dropout |
:x: |
|
Embed - hot encode |
:x: |
|
Caffe normalization layer support
グループ |
サポート |
制限 |
Local Response Normalization (LRN) |
:heavy_check_mark: |
zia-firmware-c3-sd-100mhz/zia-firmware-c3-emmc-100mhz のバージョン7.0.20180215 以前で有効です。AlexNet とGoogLeNet で使われた設定のみサポートされています。 |
Mean Variance Normalization (MVN) |
:x: |
|
Batch Normalization (BR) |
:heavy_check_mark: |
現在は直前の畳み込み層に統合されます。 |
Caffe activation layer support
グループ |
サポート |
制限 |
ReLU |
:heavy_check_mark: |
|
Rectified ReLU |
:heavy_check_mark: |
|
Leaky ReLU |
:heavy_check_mark: |
|
Parametric ReLU |
:heavy_check_mark: |
|
Exponential ELU |
:x: |
|
Sigmoid |
:heavy_check_mark: |
|
TanH |
:heavy_check_mark: |
|
Absolute Value |
:heavy_check_mark: |
|
Power func |
:x: |
|
Exp func |
:x: |
|
Log func |
:x: |
|
BNLL func |
:x: |
|
Threshold |
:x: |
|
Bias |
:heavy_check_mark: |
変換中にバイアスを追加します(ハードウェアの機能ではありません)。 |
Scale |
:x: |
|
Caffe utility layer support
グループ |
サポート |
制限 |
Flatten |
:heavy_check_mark: |
ソフトウェア実装です |
Reshape |
:heavy_check_mark: |
無視されます |
Batch Reindex |
:x: |
|
Split |
:x: |
|
Concat |
:heavy_check_mark: |
ソフトウェア実装です |
Slicing |
:x: |
|
Eltwise |
:heavy_check_mark: |
|
Filter / Mask |
:x: |
|
Parameter |
:x: |
|
Reduction |
:x: |
|
Silence |
:x: |
|
ArgMax |
:x: |
|
Softmax |
:heavy_check_mark: |
ソフトウェア実装です |
Python |
:x: |
|
Caffe loss layer support
グループ |
サポート |
制限 |
Multinomial Logistic Loss |
:x: |
|
Infogain Loss |
:x: |
|
Softmax with Loss |
:x: |
|
Sum-ofSquares / Euclidean |
:x: |
|
Hinge / Margin |
:x: |
|
Accuracy / Top-k layer |
:x: |
|
Contrastive Loss |
:x: |
|
Keras の層のサポート
この節では、Keras のサポートされている層を紹介します。
以下の表では、サポート
列は現在ネットワーク変換ツールによりサポートされていることを示し、将来
列はその層がAI プロセッサによりサポートされているが、ネットワーク変換ツールが対応してないこと、もしくはのちのバージョンでサポートされることを示します。
Noise, Own Layers, Loss, Metrics グループ内の関数はサポートされていません。
Keras convolution layer support
グループ |
サポート |
制限 |
Conv1D |
:heavy_check_mark: |
|
Conv2D |
:heavy_check_mark: |
最大カーネルサイズは 7x7 |
SeparableConv2D (Depthwise) |
:heavy_check_mark: |
最大カーネルサイズは 7x7 |
Conv2DTranspose |
:heavy_check_mark: |
zia-firmware-c3-emmc/zia-firmware-c3-sd のバージョン7.0.20190410 以降でサポートしています。Dilated Deconvolution はサポートしていません。 |
Conv3D |
:x: |
|
Cropping1D |
:x: |
|
Cropping2D |
:x: |
|
Cropping3D |
:x: |
|
UpSampling1D |
:heavy_check_mark: |
nearest neighbor の設定のみサポート |
UpSampling2D |
:heavy_check_mark: |
サイズ2 でストライド2 、nearest neighbor の設定のみサポート |
UpSampling3D |
:x: |
|
ZeroPadding1D |
:heavy_check_mark: |
|
ZeroPadding2D |
:heavy_check_mark: |
|
ZeroPadding3D |
:x: |
|
Keras pooling layer support
グループ |
サポート |
制限 |
MaxPooling1D |
:heavy_check_mark: |
|
MaxPooling2D |
:heavy_check_mark: |
|
MaxPooling3D |
:x: |
|
AveragePooling1D |
:heavy_check_mark: |
|
AveragePooling2D |
:heavy_check_mark: |
|
AveragePooling3D |
:x: |
|
GlobalMaxPooling1D |
:heavy_check_mark: |
|
GlobalAveragePooling1D |
:heavy_check_mark: |
|
GlobalMaxPooling2D |
:heavy_check_mark: |
|
GlobalAveragePooling2D |
:heavy_check_mark: |
|
Keras locally connected layer support
グループ |
サポート |
制限 |
LocallyConnected1D |
:x: |
|
LocallyConnected2D |
:x: |
|
Keras recurrent layer support
グループ |
サポート |
制限 |
Simple RNN |
:x: |
|
GRU |
:x: |
|
LSTM |
:x: |
|
Keras merge layer support
グループ |
サポート |
制限 |
Add |
:heavy_check_mark: |
|
Multiply |
:x: |
|
Average |
:x: |
|
Maximum |
:x: |
|
Concatenate |
:heavy_check_mark: |
ソフトウェア実装です |
Dot |
:heavy_check_mark: |
|
Keras advanced activation layer support
グループ |
サポート |
制限 |
LeakyReLU |
:heavy_check_mark: |
|
PReLU |
:heavy_check_mark: |
|
ELU |
:x: |
|
ThresholdedReLU |
:x: |
|
Keras normalization layer support
グループ |
サポート |
制限 |
Normalization |
:heavy_check_mark: |
|
Keras activation function support
グループ |
サポート |
制限 |
Softplus |
:x: |
|
Softsign |
:x: |
|
ReLU |
:heavy_check_mark: |
|
TanH |
:heavy_check_mark: |
|
Sigmoid |
:heavy_check_mark: |
|
Hard_sigmoid |
:x: |
|
Softmax |
:heavy_check_mark: |
|
Linear |
:heavy_check_mark: |
|