さて、古い質問への新しい答えですが、今はもっと重要です。あなたが求めている質問は有限の精度、通常は信号解析と実験数学の領域に関係しています。
倍精度(DP)浮動小数点を使用すると、ほとんどの実際の数学の問題と同じように、有限精度の問題が存在しないように見せかけることができます。実験的な数学ではふりはありません。
単精度(SP)フロートでは、量子化ノイズを考慮する必要があります。ニューラルネット(NN)、たたみ込みネット(CNN)、残差ネット(ResN)などの機械学習モデルが本質的にノイズを拒否する場合、SPはほとんどの場合DPと同様の結果を示します。
半精度(HP)は(今CUDAツールキット7.5でサポートされている)浮かぶ必要が量子化効果(騒音及び丸め)が考慮されていること。おそらく、まもなく一般的な機械学習ツールキットにHPが浮かぶでしょう。
固定精度の数値だけでなく、浮動小数点でより低い精度の計算を作成する最近の作業があります。確率的丸めにより、収束をCNNで進めることができるようになりましたが、解はそれなしで分岐します。これらのペーパーは、機械学習で有限精度の数値を使用する場合の問題の理解を深めるのに役立ちます。
質問に対処するには:
SPはそれほど悪くない。ご指摘のとおり、2倍の速さですが、メモリにより多くのレイヤーを配置することもできます。おまけは、GPUでデータを取得および取得するオーバーヘッドを節約することです。計算が高速でオーバーヘッドが少ないほど、収束時間が短くなります。とは言うものの、HPは、一部の問題については、ネットワークのある部分ではより優れており、他の部分ではより優れています。
- 機械学習ツールキットの多くはSPとDPを処理しているようです。おそらく、ツールキットの幅広い経験を持つ他の誰かがそのニックネームを追加するでしょう。
- Pythonは、gpuツールキットがサポートするものをサポートします。あなたはCPUで解釈されたスクリプトを実行するので、Pythonデータタイプを使いたくないでしょう。
現在、ニューラルネットワークのトレンドは非常に深いレイヤーに移行する傾向にあり、最速のgpuクラスターでは数日以上の実行が一般的です。