Joeの精進記録

旧:競プロ練習記録

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の場合は配列の要素をサンプルとしたときの、真の分布の標準偏差の不偏推定量を返します。つまり、分散を求めるときに nではなく n-1で割ります。とくに1要素の配列のstdはtorchの場合nanになるので注意です。分散についても同様です。ちなみにarr.std(ddof=1)とすると、numpyの場合と同じ結果が返ります

論文もうちょい頑張るか〜