2017-12-24 11 views
-1

PyTorchを科学計算パッケージとして使用したいと思います。テンソルは基本的にGPUで加速されたnumpy配列であり、そのautogradメカニズムはニューラルネットワーク以外の多くのものにとって潜在的に有用です。科学的計算にPyTorchを使用する

しかし、利用可能なチュートリアルとドキュメントは、機械学習のために使用してすぐに人々を起立させて稼働させるのに強く役立ちます。 TensorVariableクラスで利用可能な良い情報がたくさんありますが(私はその資料が合理的にうまくいくことを理解していますが)、nnoptimパッケージはAPIを説明するよりもむしろ例によって導入されているように見えます。まさに何が起こっているのか。

ここで私の主な質問はoptimパッケージをnnパッケージも使用せずに使用できるかどうかです。もちろん、ニューラルネットワークではないにしても、私は常にnn.Moduleのサブクラスとして私のシミュレーションを実装することができますが、私はこれを行うときに何が起こるのか、そして私の特定のアプリケーションに対してどんな利点/欠点があるのか​​理解したいと思います。

もっと広く言えば、単に例を提示するのではなく、APIの論理的な概要(具体的にはnnoptim)の詳細を示すリソースへのポインタです。

+0

将来の同じミスを避けるため、投票の理由を知っておくと便利です。 (PyTorchの開発者の一人がYouTubeで「PyTorch:フレームワークを高速でダイナミックに深く学習するためのフレームワーク」というプレゼンテーションを行っていることに注意してくださいそれは*クレイジーではありません。) – Nathaniel

答えて

1

nnを使用せずにoptimを使用することに関する特定の質問に対する部分的自己回答です。答えは、はい、あなたはそれを行うことができます。実際には、ソースコードを見ると、optimパッケージはnnについて何も知らず、変数とテンソルだけを気にしています。後で、その後

optimizer = optim.Adam([var1, var2], lr = 0.0001) 

と::

ドキュメントは、次の不完全な例を示します

for input, target in dataset: 
    optimizer.zero_grad() 
    output = model(input) 
    loss = loss_fn(output, target) 
    loss.backward() 
    optimizer.step() 

modelはどこでも定義されており、nnに何かあるかもしれないように見えるされていない機能、実際には、すべてのiが0である限り、var1var2を使用してoutputからinputを計算するPython関数になることができます。中間段階は、変数を使用して区別されます。 optimizer.step()を呼び出すと、var1var2の値が自動的に更新されます。全体PyTorchの構造的に

、それに有用であるそのような機能のライブラリーとともに、nnは一緒に基本的にチェーン微分関数にだけ便利な方法であると、optimnnは、互いに独立していると思われます機械学習。しかし、私はまだ全体のパッケージの良い技術的な概要へのポインタを評価するだろう。