カスタムレイヤ - DigitalMediaProfessionals/dv-sdk GitHub Wiki
深層学習は発展の早い分野なので、すべての種類の層をハードウェアでサポートすることはできません。 AI プロセッサはソフトマックス層などの標準的な層をソフトウェアでサポートしています。 しかしAI プロセッサによりサポートされていない層は数多くあります。この章ではSSD のPriorBox 層を例に、カスタムレイヤサポートを追加する方法を見ていきます。
概要
カスタムレイヤをサポートするためには次の手順を踏んでください。
-
ネットワークのデータファイルに全パラメータが含まれていることを確認してください。 DNN フレームワークにおける標準的でない層の実装ではネットワークに必要なすべてのパラメータがファイルに保存されないことがあります。 Keras においてすべてのパラメータをデータファイルに出力する方法についてはカスタムレイヤのパラメータをエクスポートする をご覧ください。
-
カスタムレイヤ定義スクリプトを作成し、それをネットワーク変換ツールに渡してください。 変換ツールがカスタムレイヤを認識するためには、ツールが出力すべきパラメータと出力の次元を決める方法をツールに教える簡単なPython スクリプトを書いてください。 詳しくはカスタムレイヤ定義スクリプト をご参照ください。
-
ネットワークが実行されるときに呼ばれる、生成されたFPGA ネットワーククラスのためのカスタムレイヤコールバック関数を定義してください。 ネットワーク変換ツールはカスタムレイヤの定義を生成し、すべてのパラメータを生成されたソースコードに書き出します。 カスタムレイヤの実行のためには、対応するタイプのコールバック関数がFPGA ネットワーククラスから呼ばれます。 このためには、コールバック関数を実装しなくてはなりません。 実行時のカスタムレイヤの実装 がコールバック関数を実装するために役立つネットワーククラスのインターフェースについて述べているマス。
現在、Keras を使っているネットワークのみがカスタムレイヤサポートを受けられます。 これは、Caffe ではProtobuf 形式でネットワークを出力し、変換ツールがこれを容易には拡張できないためです。