Hello, PyTorch
PyTorch入門
PyTorchによる機械学習 & 自動微分 with GPU

PyTorch はGPUアクセラレーションをサポートした 自動微分 ・ 最適化 ライブラリです。
自動微分
ニューラルネット は偏微分を多用するので PyTorch にも自動微分機能がついています
例えば、
y=x2
を微分してみましょう。
class torch.Tenosr が持つ .backward() メソッドを使う事で微分を行なってくれます。
二階微分だって出来ます。
当然、偏微分だって出来ます。
z=x2y+3xy5+x3∂x∂z=2xy+3y5+3x2∂y∂z=x2+15xy4
最適化
ニューラルネットの学習には最適化の計算が必須です。 当然、PyTorchにも様々な最適化アルゴリズムが実装されています。
例えば、この式の最小値を求めてみましょう。
y=3x2+6x−9
PyTorch with GPU
PyTorchで、どうやってGPUを使うかを見ていきましょう。 まずは、CPUで行列の積を求めてみます。 そもそも、行列積の計算は オーダ $O(n^3) $ です。 愚直にCPUでやると遅い。
次にGPUにデータを送って計算させてみます。
GPUにデータを載せるには、torch.Tensor オブジェクトが持つ .cuda() メソッドを使います。 さらに一般化したメソッドに、 .to(device)もあります。
ちなみに、CPUとGPU別々にデータが格納されているなら、同じ場所にデータを置いてあげないと計算できません。
GPUが管理するメモリ上にあるデータをCPUが管理するメモリー上に移すには
CPUが管理するメモリ上にあるデータをGPUが管理するメモリ上に移すには
を実行します。
また、GPUが実行可能なら自動的に変数をGPUに載せていきたいのなら
とすれば、OKです。
一通りPyTorchの使い方を学んだので次から早速ニューラルネットを実装してみましょう
Last updated