1

フォワード伝搬中の計算時間を短縮するために、訓練されたCNNの各レイヤーを並列に実行したい(基本的には、FPSにあまり影響を与えずにカメラを使用するリアルタイムアプリケーションのCNNを実行する)。私は各レイヤーの入力キューと出力キューを保持します。各レイヤーは入力レイヤーからブロブを処理し、出力レイヤーにダンプすることができます(これは論理的には並行して行うことができます)。各層の出力キューは、次の層の入力キューとして機能します。そして、私は最後の層の出力キュー(バイナリラベルになる)からすべての出力を集めて処理します。だから私の質問は、これを実装するために、CaffeまたはTensorflowのいずれかでCNNの各レイヤーを並行して実行することが可能であるということです。caffeまたはtensorflowのいずれかで並列に各層を実行することは可能ですか?

答えて

2

Tensorflowでは、「デバイス配置」を指定できるため、グラフ内の各操作または操作グループに対して、複数のGPUがある場合など、実行するGPUを指定できます。 GPUでの操作方法のサンプルコードについては、this tutorialを参照してください。

1

TFについて知りません。
カフェについて - これは悪い考えのようです。レイヤー間に待ち行列と同期メカニズムを置くと、(特にGPUで実行してCPU構造を使って同期する場合は)遅くなるだけです。 Caffeは順方向パスを順番に実行し、高速に実行するよう設計されています。並列処理が速く実行するのに役立つと思われるのはなぜですか?

+0

CNNを使って分類するための画像が10枚あるとします。現在、Caffeで順方向伝搬を使用しているので、各画像(最初の画像を除く)はキュー内の画像を待ってからcnnパイプライン全体を通過する必要があり、時間の無駄です。第1の画像が第1の層を通過するとすぐに、第2の画像がそれを入力しなければならない。 –

+0

私は、各パイプラインを並行して立ち上げるのが最も速いと知っていますが、リソースが多すぎます(基本的にCNNレイヤーの複数の重み) –

+0

@AyushPandey 'K'フレームに十分なリソースがあれば、大きさ 'K'のバッチとして実行する方が良い。 – Shai

関連する問題