pytorchのワナtop 3
研究でpytorchを初めて使ったんですが、いろいろつまづきました。3つ紹介します。top 3と書きましたがtopじゃないかもしれません
torchのtensorのサイズはintではなくtorch.Size型
まあ基本中の基本なので知ってる人は多いと思いますが、arr.size() == 1
とかやっても永遠にFalseになるので注意です。
torch.tensorとtorch.Tensorは違う
torch.tensorは引数のオブジェクトの型に合わせたtensorを作りますが、TensorはFloatTensorのエイリアスで、float32型のオブジェクトになります。案外Tensorの方が便利
torchのstdとnumpyのstdは違う
配列の標準偏差を求めるときに arr.std()
としますが、torchの場合は配列の要素をサンプルとしたときの、真の分布の標準偏差の不偏推定量を返します。つまり、分散を求めるときにではなくで割ります。とくに1要素の配列のstdはtorchの場合nanになるので注意です。分散についても同様です。ちなみにarr.std(ddof=1)
とすると、numpyの場合と同じ結果が返ります
論文もうちょい頑張るか〜