LoginSignup
1
0

More than 3 years have passed since last update.

TorchScript の不都合メモ

Last updated at Posted at 2020-04-08

v1.6.0 です.

いずれ解決されるものと思われます.
(と思ったが意外と解決されないかも...)

isinf で any ができない

torch.isinf(x).any() がコンパイル時 NG(返り値が bool とみなされる. 本来は Tensor)

torch.isnan(x).any()torch.isfinite(x).all() はうまく行きます.

inverse() では LAPACK(BLAS)ビルドが必要.

x.inverse() をするには LAPACK(BLAS)を有効にして libtorch ビルドが必要です(一応 prebuilt バイナリでは on になっている模様で, 利用はできるが, ソースコードからビルドする場合に注意)

reversed iterator が使えない.

for i in reversed(range(10)):

ができません.

exp(inf) の振る舞いがおかしい

x を float32 型のテンソルとします.

1.0/exp(x)

が, テンソル x の要素が inf の場合, 結果が inf になります.
(Python での結果, および C++ での 1.0/std::exp(inf) は 0.0 になる)

nan_to_num が無い

torch.nan_to_num が使えないので, NaN を zero にとかがやりずらいです.

とりあえずは torch.where で代用できます.

zero = torch.zeros(...)
inf_mask = torch.isinf(x)
y = torch.where(inf_mask, zero, x)
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0