[解決済み] PyTorchでベクトルのノルム、1-ノルム、2-ノルムを計算する正しい方法は何ですか?
2022-02-26 03:03:36
質問
行列があります。
t = torch.rand(2,3)
print(t)
>>>tensor([[0.5164, 0.3651, 0.0882],
[0.4488, 0.9824, 0.4067]])
以下略 これ の入門編で、PyTorchで試してみたいと思っています。
のような気がする。
-
norm
ベクトルの大きさまたは長さは、空間におけるベクトルの範囲を表す非負の数であり、ベクトルの大きさまたはノルムと呼ばれることもあります。 -
1-Norm
は、ベクトルの絶対値の和です。スカラーの絶対値は|a1|という表記を用います。事実上、ノルムはベクトル空間の原点からのマンハッタン距離の計算である"。 -
2-Norm
は、"ベクトル空間の原点からのベクトル座標の距離です。L2ノルムは、ベクトル値の二乗和の平方根として計算されます"
現在、これしか知りません。
print(torch.linalg.norm(t, dim=1))
>>>tensor([0.6385, 1.1541])
の3つ(ノルム、1-ノルム、2-ノルム)のうち、どれがノルムなのかがわからないのですが。 ここで を計算し、残りをどう計算するか。
解き方は?
0-、1-、2-ノルムを計算するには、以下のいずれかの方法をとります。
torch.linalg.norm
を提供します。
ord
引数(
0
,
1
および
2
それぞれ)。あるいは直接テンソル上で
Tensor.norm
を使用すると
p
引数で指定します。以下は3つのバリエーションです: 手動で計算され、引数が
torch.linalg.norm
と
Tensor.norm
.
-
0-ノルム
>>> x.norm(dim=1, p=0) >>> torch.linalg.norm(x, dim=1, ord=0) >>> x.ne(0).sum(dim=1)
-
1-ノルム
>>> x.norm(dim=1, p=1) >>> torch.linalg.norm(x, dim=1, ord=1) >>> x.abs().sum(dim=1)
-
2-ノルム
>>> x.norm(dim=1, p=2) >>> torch.linalg.norm(x, dim=1, ord=2) >>> x.pow(2).sum(dim=1).sqrt()
関連
-
[解決済み] 'int'オブジェクトに'__getitem__'属性がない。
-
[解決済み] Pythonのリストメソッドであるappendとextendの違いは何ですか?
-
[解決済み] 最小限の驚き」と「変更可能なデフォルトの引数
-
[解決済み] パラメータに**(ダブルスター/アスタリスク)、*(スター/アスタリスク)がありますが、これはどういう意味ですか?
-
[解決済み] オブジェクト名の前のシングルアンダーコアとダブルアンダーコアの意味は何ですか?
-
[解決済み] Pythonで型をチェックする標準的な方法は何ですか?
-
[解決済み] Python 3 の "python -m SimpleHTTPServer" に相当するものは何ですか?
-
[解決済み] ファイルに行を書き込む正しい方法?
-
[解決済み】__str__と__repr__の違いは何ですか?
-
[解決済み】type()とisinstance()の違いは何ですか?)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
pythonを使ったオフィス自動化コード例
-
PicgoのイメージベッドツールをPythonで実装する
-
PyQt5はユーザーログインGUIインターフェースとログイン後のジャンプを実装しています。
-
パッケージングツールPyinstallerの使用と落とし穴の回避
-
[解決済み】socket.error: [Errno 48] アドレスはすでに使用中です。
-
[解決済み】TypeError: re.findall()でバイトのようなオブジェクトに文字列パターンを使用することはできません。)
-
[解決済み】TypeError: 系列を <class 'float'> に変換することができません。
-
[解決済み] 'int'オブジェクトに'__getitem__'属性がない。
-
[解決済み】SyntaxError: デフォルト以外の引数がデフォルトの引数に続く
-
[解決済み】 TypeError: += でサポートされていないオペランド型: 'int' および 'list' です。