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)