問題タブ [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.
python - テンソルノルムのオートグラードで「形状が整列していません」
次のように、 autograd を使用してテンソルのノルムの勾配を計算したいと思います。
私は別の実装も試しました(たとえば、独自のノルムを使用するか、テンソルの異なる形状を使用するなど)が、常にエラーが発生します
ValueError: 形状 (100,100) と (10000,100) が整列していません: 100 (dim 1) != 10000 (dim 0)
python - numpy 配列の合計を減らす最も効率的な方法 (autograd を使用)
私は2つの配列を持っています:
私は生産したいと思います:
可能な限り効率的な方法で。
- 私の値はautogradを介して計算されます
- 上記の点により、パンダでグループバイを行うことは実際には効率的ではありません
- 同じ値で何百回も実行する必要があり
index
ますが、値は異なります len(values)
~ 10**7len(set(index))
~ 10**6Counter(index).most_common(1)[0][1]
〜1000
純粋なnumpyソリューションが最適だと思います。
の縮小版を事前計算してから、次のindex
ようにします。
しかし、それは十分に効率的ではありません。
最小限のコード サンプルを次に示します。
python - PyTorch を使用したインプレース操作
PyTorch でインプレース操作を処理する方法を考えていました。私が覚えているように、autograd でのインプレース操作の使用には常に問題がありました。
そして、実際には、以下のこのコードが機能することに驚いています。テストしていませんが、このコードは version でエラーを発生させたと思います0.3.1
。
基本的に私がしたいのは、テンソルベクトルの特定の位置を特定の値に設定することです:
作業例コード:
出力:
だから明らかにバージョンで0.4.1
。これは、警告やエラーなしで問題なく機能します。
ドキュメントのこの記事を参照してください: autograd-mechanics
autograd でインプレース操作をサポートすることは困難な問題であり、ほとんどの場合、その使用をお勧めしません。Autograd の積極的なバッファの解放と再利用により、非常に効率的になり、インプレース操作によって実際にメモリ使用量が大幅に削減されることはほとんどありません。メモリ負荷が高い環境で操作していない限り、それらを使用する必要はないかもしれません。
ただし、機能する場合でも、ほとんどの場合、インプレース操作の使用は推奨されません。
だから私の質問は:
インプレース操作の使用はパフォーマンスにどの程度影響しますか?
テンソルの 1 つの要素を特定の値に設定したい場合に、インプレース操作を使用して回避するにはどうすればよいですか?
前もって感謝します!