問題タブ [autograd]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
399 参照

python - PyTorch - autograd 変数の変更

私の PyTorch プログラムには、実行時に継続的に更新されるマトリックスがあります。

この更新をどのように実行するのだろうか。私はこのようなものを使用してみました:

matrixとはどちらhiddenも autograd 変数です。上記の例を使用すると、次のエラー メッセージが表示されます。

これを回避して、インプレース操作を使用せずに更新を実行する方法を知りたいです。

おそらく、マトリックスをスライスして torch.cat で新しいマトリックスを作成するとうまくいくでしょうが、これはあまり良い解決策ではないようです。

これを行うより良い方法はありますか?

前もって感謝します!

0 投票する
1 に答える
5819 参照

python-3.x - PyTorch でカスタム損失関数を実行中

nn.Module を拡張してカスタム損失関数を使用しようとしていますが、エラーを回避できません。

変数の要素 0 は grad を必要とせず、grad_fn を持っていません

注:私のラベルはサイズのリストです:num_samplesですが、各バッチはバッチ全体で同じラベルを持つため、呼び出してバッチ全体のラベルを単一のラベルに縮小します.diag()

私のコードは次のとおりで、転移学習チュートリアルに基づいています。

私の損失関数は以下のように定義されています。

次に、次を実行してモデルを実行します。

他の損失関数と連携させようとしましたが、役に立ちませんでした。loss.backward()が呼び出されると、常に同じエラーが発生します。

loss.backwardを拡張する場合のカスタム実装は必要ないというのが私の理解でしたnn.Module

0 投票する
1 に答える
692 参照

python - Avoiding array assignment in autograd

I understand from the autograd tutorial that array assignment is not supported when the array is contained in the objective to be differentiated. However, I currently have the following objective function in my code which I would like to differentiate with respect to theta:

Typically I can avoid the for loop by vectorizing the computation over theta; however, in this case the computation already involves various linear algebra operations (inverses, etc.) given a specific row of theta (as hyperparameters), and I found it quite difficult to vectorize the operation over all rows of theta. In this case, I don't know of a better way than filling the res array row by row with a for-loop.

I have tried a naive way to avoid array assignments by creating a list and at each iteration append the results to that list, then finally convert the list to the array upon returning res, but I get all-zero gradients in the end...

I wonder what is the general recommend solution in this setup?