4年前にデビューしたPyTorchは、データサイエンス業界に旋風を巻き起こしたモジュールの1つです。
PyTorchを使い始めるために、きちんと文書化されたコード、チュートリアル、サンプルをユーザーに提供し、データサイエンティストや研究者の目に大きな衝撃を与えました。
PyTorchの作者は、コンピュータビジョンや自然言語処理の分野で非常に有用とされていたモジュール、TorchVisionやTorchTextを手がけてきた人物でもある。
PyTorchは、主にPythonでTensorsやDynamic neural networkを扱うモジュールですが、他の分野にも拡張することが可能です。
PyTorchを使いたい場合は、ここから始めることができます。
また、データサイエンスと機械学習にはAnacondaを使用することが推奨されていますので、そちらも検討してみてください。
PyTorch のインストール
PyTorchの公式サイトでは、ディストリビューションやOSに応じて、必要なインストールコマンドを取得するための簡単なインターフェイスが用意されているので、それを使って遊びながらインストールすることができます。
通常の環境とデータサイエンス環境を分けたい場合は、Virtual Environmentsの作成を検討する必要があります。
# Importing torch to use in the script. import torch
|
これを少し弄って、ローカルのPyTorchライブラリのaptバージョンを選択すると、PyTorchで作業できるようになります。
この記事もチェック:Pythonのデータサイエンスで使えるライブラリを5つ紹介する
PyTorch を使い始める
PyTorchをインストールしたのなら、素晴らしい! これで準備は万端です。
1.0 テンソル?
もしあなたがPythonで大きな行列を扱ったことがあるなら、おそらくNumPyを使っていることでしょう。
これは、NumPyが多次元配列の処理に優れたサポートを提供し、n次元配列に対する様々な異なる操作を可能にしているからです。
しかし、PyTorchはTensor技術でこの分野に競争をもたらしている。
テンソルはある意味、NumPyが提供するものと同じような多次元配列です。
しかし、TensorはGPUで動作するときにかなりよくサポートされているという事実に違いがある。
GoogleのTensorflowもテンソルを使ってデータを処理し、動作させる。
では、TensorsとPyTorchを使い始めるにはどうしたらいいのでしょうか?調べてみましょう。
1.1. トーチのインポート
どんなモジュールを使うにしても、まずスクリプトに取り込むためにインポートが必要なことはもう分かっています。
そのため、まさにそれをやってみましょう。
# Creating tensors with strict numbers ten1 = torch.tensor( 5 )
ten2 = torch.tensor( 8 )
print (ten1, ten2)
# Output : tensor(5) tensor(8) # Creating a matrix of zeros using the zeros function ten3 = torch.zeros(( 3 , 3 ))
print (ten3)
# tensor([[0., 0., 0.], [ 0. , 0. , 0. ],
[ 0. , 0. , 0. ]])
# Creating a matrix of random numbers ten4 = torch.randn( 3 , 3 )
print (ten4)
# tensor([[-0.9685, 0.7256, 0.7601], [ - 0.8853 , 0.4048 , - 1.0896 ],
[ 0.6743 , 1.5665 , 0.2906 ]])
|
1.2. テンソルの作成
Tensor (基本的には行列) を torch
モジュールを使って作成するのは非常に簡単です。
ここでは、テンソルオブジェクトを初期化したり生成したりするためのいくつかのメソッドを紹介します。
firstten = torch.tensor( 3 )
secondten = torch.tensor( 6 )
# Addition of tensors print (firstten + secondten)
# Output : tensor(9) # Subtraction of tensors print (firstten - secondten)
# Output : tensor(-3) # Multiplication of tensors print (firstten * secondten)
# Output : tensor(18) # Division of tensors print (firstten / secondten)
# Output : tensor(0.5000) |
1.3. 1.3. テンソルの基本操作
テンソルは、NumPyモジュールによって作成された行列のように、様々な方法で扱うことができる。
基本的な数値演算を扱うことができる。
1.4. テンソールを使って前進する
テンソルは、Pythonで普通に変数を使ってできる単純な操作以外にもたくさん使うことができます。
PyTorchスクリプトの多くの操作で、普通に変数として使われます。
行列の乗算 torch.mm
や等間隔のテンソルの作成 torch.linspace
、そして torch.sin(x)
のような数学関数による処理といった機能で、です。
提供される機能が、数学的アプローチを組み込んだ深い計算を可能にすることは、驚くには値しないでしょう。
例題を通してテンソルの働きを調べたい場合は、ここを見るとよいだろう。
What’s Next?
通常のテンソルやデフォルトで提供されている関数の他に、PyTorchが提供する別のモジュールに目を向けてみるのもいいかもしれません。
テンソル自体はあくまでベースです。
真の力は、この媒体を計算に使うためにモジュールが提供する応用的な使い方にある。
PyTorchは、torch.nn
というニューラルネットワークを扱うために設計されたモジュールを提供してくれます。
この torch.nn
モジュールには、ニューラルネットワークに基づいた演算を行うための様々な関数が含まれています。
- コンテナ
- コンボリューションレイヤー
- プーリング層
- パディングレイヤー
- 非線形アクティベーション (重み付き和、非線形性)
- 非線形活性化(その他)
- 正規化層
- リカレント層
- トランスフォーマー層
- 線形層
- ドロップアウトレイヤー
- スパースレイヤー
- 距離関数
- 損失関数
- ビジョンレイヤー
- データ並列レイヤ(マルチGPU、分散型)
- ユーティリティ
- 量子化関数
これらを使いこなすことが、PyTorchをデータサイエンスのモジュールとして進めるための次のステップになるでしょう。
まとめ
PyTorchはまだ開発途中ですが、多くのデータサイエンスモジュールより広く優れた機能を提供しています。
PyTorchと互換性のある多くのモジュールが作成されており、それらを扱うためのリソースも数多く存在します。
PyTorchはオープンソースプロジェクトであり、あなたがこのプロジェクトで働き、将来のバージョンに貢献することができます。
GitHubのリンクはこちらです。
データサイエンス・プロジェクトに役立つ他の記事 – Pandas, and Training and testing with sklearn をご覧ください。
参考文献
- PyTorch の公式ドキュメンテーション
- PyTorch を使い始めるためのチュートリアル
- PyTorch を使うためのリソース