0

GPU コンピューティングを使用して、バックプロパゲーションを使用して独自のニューラル ネット ライブラリを作成しています。トレーニングセットがGPUメモリに収まるかどうかを確認する必要がないことを普遍的にしたい。

トレーニング セットが大きすぎて GPU メモリに収まらない場合、ニューラル ネットワークをどのようにトレーニングしますか? ホストのRAMに収まると思います。

最初のピースでトレーニング反復を実行し、デバイスで割り当てを解除して、2 番目のピースをデバイスに送信し、その上でトレーニングする必要があります...そして、勾配の結果を合計します。

PCIe バスを介してすべてのデータをプッシュする必要がある場合、遅すぎませんか? もっと良いアイデアはありますか?

4

1 に答える 1

0

ミニバッチ勾配降下法を使用: ループ内で、

  • サンプルのバッチを GPU に送信する
  • 誤差の計算、バックプロップ勾配
  • パラメータを調整します。

ネットワークが収束するまで、このループを数回繰り返します。

これは、単純なバッチ学習アルゴリズム (バッチ勾配降下法) と完全に同等ではありません。実際、通常、バッチ学習よりも速く収束します。各トレーニング ループの前にサンプルをランダムにシャッフルすると役立ちます。したがって、メモリ転送はまだありますが、反復回数はそれほど多くなく、アルゴリズムはより高速に実行されます。

于 2014-01-17T10:48:33.100 に答える