サポートしている層の種類 - 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: |
|