PyTorch Sparse 0.6 : 概要 (README)

PyTorch Sparse 0.6 : 概要 (README) (翻訳/解説)
翻訳 : (株)クラスキャット セールスインフォメーション
作成日時 : 03/18/2021 (0.6.9)

* 本ページは、PyTorch Sparse 0.6 の以下のページを翻訳した上で適宜、補足説明したものです:

* サンプルコードの動作確認はしておりますが、必要な場合には適宜、追加改変しています。
* ご自由にリンクを張って頂いてかまいませんが、sales-info@classcat.com までご一報いただけると嬉しいです。

 

無料セミナー実施中 クラスキャット主催 人工知能 & ビジネス Web セミナー

人工知能とビジネスをテーマにウェビナー (WEB セミナー) を定期的に開催しています。スケジュールは弊社 公式 Web サイト でご確認頂けます。
  • お住まいの地域に関係なく Web ブラウザからご参加頂けます。事前登録 が必要ですのでご注意ください。
  • Windows PC のブラウザからご参加が可能です。スマートデバイスもご利用可能です。
クラスキャットは人工知能・テレワークに関する各種サービスを提供しております :

人工知能研究開発支援 人工知能研修サービス テレワーク & オンライン授業を支援
PoC(概念実証)を失敗させないための支援 (本支援はセミナーに参加しアンケートに回答した方を対象としています。)

お問合せ : 本件に関するお問い合わせ先は下記までお願いいたします。

株式会社クラスキャット セールス・マーケティング本部 セールス・インフォメーション
E-Mail:sales-info@classcat.com  ;  WebSite: https://www.classcat.com/  ;  Facebook

 

PyTorch Sparse 0.6 : 概要 (README)

このパッケージは autograd サポートを持つ最適化されたスパース行列演算の小さい拡張ライブラリから成ります。このパッケージは現在以下のメソッドから成ります :

総ての含まれる演算は様々なデータ型上で動作して CPU と GPU の両者のために実装されています。torch.sparse_coo_tensor を作成する hazzle を回避するため、このパッケージは (PyTorch で定義されたのと同じ shape を持つ) 引数としてインデックスと値 tensor を単純に渡すことによりスパース tensor 上の演算を定義します。値だけが autograd サポートを装備することに注意してください、インデックスは離散で従って微分可能ではないからです。

 

関数

Coalesce

torch_sparse.coalesce(index, value, m, n, op="add") -> (torch.LongTensor, torch.Tensor)

行単位でインデックスをソートして重複エントリは除去します。重複エントリはそれらをまとめて scatter することにより除去されます。scatter については、torch_scatter の任意の演算が利用できます。

 
パラメータ

  • index (LongTensor) – スパース行列のインデックス tensor。
  • value (Tensor) – スパース行列の値 tensor。
  • m (int) – 対応するデンス行列の最初の次元。
  • n (int) – 対応するデンス行列の 2 番目の次元。
  • op (文字列、オプション) – 使用する scatter 演算 (デフォルト: “add”)

 
Returns

  • index (LongTensor) – スパース行列の coalesced インデックス tensor。
  • value (Tensor) – スパース行列の coalesced 値 tensor。

 
サンプル

import torch
from torch_sparse import coalesce

index = torch.tensor([[1, 0, 1, 0, 2, 1],
                      [0, 1, 1, 1, 0, 0]])
value = torch.Tensor([[1, 2], [2, 3], [3, 4], [4, 5], [5, 6], [6, 7]])

index, value = coalesce(index, value, m=3, n=2)
print(index)
tensor([[0, 1, 1, 2],
        [1, 0, 1, 0]])
print(value)
tensor([[6.0, 8.0],
        [7.0, 9.0],
        [3.0, 4.0],
        [5.0, 6.0]])

 

Transpose

torch_sparse.transpose(index, value, m, n) -> (torch.LongTensor, torch.Tensor)

スパース行列の次元 0 と 1 を転置する。

 
パラメータ

  • index (LongTensor) – スパース行列のインデックス tensor。
  • value (Tensor) – スパース行列の値 tensor。
  • m (int) – 対応するデンス行列の最初の次元。
  • n (int) – 対応するデンス行列の 2 番目の次元。
  • coalesced (bool, オプション) – If set to False, will not coalesce the output. (default: True)

 
Returns

  • index (LongTensor) – スパース行列の transposed インデックス tensor。
  • value (Tensor) – スパース行列の transposed 値 tensor。

 
サンプル

import torch
from torch_sparse import transpose

index = torch.tensor([[1, 0, 1, 0, 2, 1],
                      [0, 1, 1, 1, 0, 0]])
value = torch.Tensor([[1, 2], [2, 3], [3, 4], [4, 5], [5, 6], [6, 7]])

index, value = transpose(index, value, 3, 2)
print(index)
tensor([[0, 0, 1, 1],
        [1, 2, 0, 1]])
print(value)
tensor([[7.0, 9.0],
        [5.0, 6.0],
        [6.0, 8.0],
        [3.0, 4.0]])

 

スパース-デンス行列乗算

torch_sparse.spmm(index, value, m, n, matrix) -> torch.Tensor

スパース行列のデンス行列による行列積。

 
パラメータ

  • index (LongTensor) – スパース行列のインデックス tensor。
  • value (Tensor) – スパース行列の値 tensor。
  • m (int) – 対応するデンス行列の最初の次元。
  • n (int) – 対応するデンス行列の 2 番目の次元。
  • matrix (Tensor) – デンス行列

 
Returns

  • out (Tensor) – デンス出力行列。

 
サンプル

import torch
from torch_sparse import spmm

index = torch.tensor([[0, 0, 1, 2, 2],
                      [0, 2, 1, 0, 1]])
value = torch.Tensor([1, 2, 4, 1, 3])
matrix = torch.Tensor([[1, 4], [2, 5], [3, 6]])

out = spmm(index, value, 3, 3, matrix)
print(out)
tensor([[7.0, 16.0],
        [8.0, 20.0],
        [7.0, 19.0]])

 

スパース-スパース行列乗算

torch_sparse.spspmm(indexA, valueA, indexB, valueB, m, k, n) -> (torch.LongTensor, torch.Tensor)

2 つのスパース tensor の行列積。Both input sparse matrices need to be coalesced (use the coalesced attribute to force).

 
パラメータ

  • indexA (LongTensor) – 最初のスパース行列のインデックス tensor。
  • valueA (Tensor) – 最初のスパース行列の値 tensor。
  • indexB (LongTensor) – 2 番目のスパース行列のインデックス tensor。
  • valueB (Tensor) – 2 番目のスパース行列の値 tensor。
  • m (int) – 最初の相当するデンス行列の最初の次元。
  • k (int) – 最初の相当するデンス行列の 2 番目の次元、そして 2 番目の相当するデンス行列の最初の次元。
  • n (int) – 2 番目の相当するデンス行列の 2 番目の次元。
  • coalesced (bool, オプション): If set to True, will coalesce both input sparse matrices. (default: False)

 
Returns

  • index (LongTensor) – スパース行列の出力インデックス tensor。
  • value (Tensor) – スパース行列の出力値 tensor。

 
サンプル

import torch
from torch_sparse import spspmm

indexA = torch.tensor([[0, 0, 1, 2, 2], [1, 2, 0, 0, 1]])
valueA = torch.Tensor([1, 2, 3, 4, 5])

indexB = torch.tensor([[0, 2], [1, 0]])
valueB = torch.Tensor([2, 4])

indexC, valueC = spspmm(indexA, valueA, indexB, valueB, 3, 3, 2)
print(indexC)
tensor([[0, 1, 2],
        [0, 1, 1]])
print(valueC)
tensor([8.0, 6.0, 8.0])
 

以上