PyTorchの特徴とインストール方法
IT技術
PyTorchとは
PyTorch(パイトーチ)とは、Pythonの機械学習ライブラリの一つで、現在最もアツいフレームワークです。
前身は、Lua言語で提供されていた「機械学習ライブラリTorch(トーチ)」です。
そのPython版が PyTorch になります。
制作しているのは、かの有名な Facebook で、日本で開発されているChainer(チェイナー)に似ていることもしばしば取り上げられています。
PyTorchの特徴
特徴としては、その扱いやすさにあります。
NumPy の配列を操作するようにデータを扱うことができ、さらにネットワークの構築は Keras のように、初心者にもコーディングしやすい・理解しやすい仕様になっていることが特徴です。
さらに最近、Chainer を開発していた Preferred Networks社 は、PyTorch に順次切り替えると発表したこともあり、さらに今後注目を集めることでしょう。
インストールの前に、多層パーセプトロンのおさらい
※インストール目的で来た人は、こちらの章は飛ばしてください。
インストール作業の前に・・・
PyTorch を使うということは「機械学習」目的の人がほとんどだと思います。
ということで、次回より【Pytorch入門】として連載を初めていきます。
そして、まずは、簡単な多層パーセプトロンから実装してみたいと思っています。
そのため、「多層パーセプトロン」について簡単におさらいしてみたいと思います。
多層パーセプトロン (MLP: Multi-Layer Perceptron)
多層パーセプトロン(通称MLP)とは、複数の形式ニューロンからなる層を複数用意した、ニューラルネットワークの最も単純な形です。
畳み込みニューラルネットワークなどと比べると、性能は劣る場合が多いです。
しかし、ニューラルネットワークの基本形であり、様々なデータに対応できるので、一度実装しておいて損はないはずです!
今回は、手書き数字(MNIST)データセットを学習させていきますが、学習法は最もメジャーな誤差逆伝播学習法(BP: Backpropagation)です。
この辺りの記事は、弊社ブログでも解説しているので是非ご一読ください!
ブログ記事
2019.05.30多層パーセプトロンを実装してみよう!【機械学習】多層パーセプトロンとは?今回は、現在の機械学習の基盤となっている「多層パーセプトロン」を実装します。また、それと並行し...
2019.06.06機械学習の要「誤差逆伝播学習法」を解説・実装してみる!「誤差逆伝播学習法」とは?誤差逆伝播学習法(BP: Backpropagation)とは、ニューラルネットワークの学習...
PyTorchのインストール
それでは、お待ちかねの環境構築をしていきましょう!
インストール
pipで環境を管理していれば、
1$ pip install torch torch vision
でインストール可能です!
あっという間ですね(笑)
このとき、データセットなどを扱うためのtorchvisionのインストールも忘れずに!
ただ、Anacondaなど、そのほかの環境で管理している人もいると思います。
その際は、以下の公式ページから、自分の環境に適したインストール方法が簡単にわかりますので、ご覧ください。
Pytorch公式ページ
https://pytorch.org/get-started/locally/
動作確認
念のため、動作確認をしてみましょう。
ついでに、PyTorchでのデータ(Tensor: テンソルまたはテンサーという型)の扱い方も見てみましょう!
ここで紹介するテンソル型の扱い以外にも、たくさんの関数が用意されているので気になった方は、是非調べて遊んでみてください。
1$ python
2>>> import torch # ここでインポートエラーにならなければOK
3>>> torch.__version__
4'1.3.1'
5>>> x = torch.tensor([1, 2, 3]) # リストを渡してtensorを生成
6>>> x
7tensor([1, 2, 3])
8>>> y = x + 1 # tensor型に定数を足す
9>>> y
10tensor([2, 3, 4])
11>>> z = x * 3 # tensor型に定数をかける
12>>> z
13tensor([3, 6, 9])
14>>> y + z # tensor型同士の足し算
15tensor([ 5, 9, 13])
16>>> a = [[[1, 2, 3], [4, 5, 6]],[[7, 8, 9], [10, 11, 12]]] # 多次元配列
17>>> torch.tensor(a)
18tensor([[[ 1, 2, 3],
19 [ 4, 5, 6]],
20
21 [[ 7, 8, 9],
22 [10, 11, 12]]])
23>>> z.numpy() # numpyの配列に変換も可能
24array([3, 6, 9])
25>>> torch.randn(2, 3, 4) # 乱数で初期化したtensorを生成
26tensor([[[ 1.2625, 0.6356, -3.0832, -1.1534],
27 [-0.9279, 1.2728, -0.1481, 0.1624],
28 [-1.2703, -1.4894, -1.3540, -2.0921]],
29
30 [[ 0.7122, -0.0086, -1.3593, 1.3659],
31 [-0.5189, -2.1019, -0.1081, 0.9969],
32 [ 0.3539, -2.2619, 0.6708, -1.3612]]])
33>>> torch.eye(5, 5) # 単位行列
34tensor([[1., 0., 0., 0., 0.],
35 [0., 1., 0., 0., 0.],
36 [0., 0., 1., 0., 0.],
37 [0., 0., 0., 1., 0.],
38 [0., 0., 0., 0., 1.]])
さいごに
今回は、PyTorchのインストールまで行ってみました!
ということで、次回からの【Pytorch入門】の連載では、簡単な多層パーセプトロンから実装してみたいと思います!
ネット上には、畳み込みニューラルネットワークの実装記事はたくさんあると思います。
ただ、多層パーセプトロンのような単純で軽量なネットワーク実装はあまり紹介されていないので必見です!
是非ご期待ください!
こちらの記事もオススメ!
2020.07.28機械学習 特集知識編人工知能・機械学習でよく使われるワード徹底まとめ!機械学習の元祖「パーセプトロン」とは?【人工知能】ニューラルネ...
2020.07.17ライトコード的「やってみた!」シリーズ「やってみた!」を集めました!(株)ライトコードが今まで作ってきた「やってみた!」記事を集めてみました!※作成日が新し...
おすすめのPyTorch本
ライトコードでは、エンジニアを積極採用中!
ライトコードでは、エンジニアを積極採用しています!社長と一杯しながらお話しする機会もご用意しております。そのほかカジュアル面談等もございますので、くわしくは採用情報をご確認ください。
採用情報へ
「好きを仕事にするエンジニア集団」の(株)ライトコードです! ライトコードは、福岡、東京、大阪の3拠点で事業展開するIT企業です。 現在は、国内を代表する大手IT企業を取引先にもち、ITシステムの受託事業が中心。 いずれも直取引で、月間PV数1億を超えるWebサービスのシステム開発・運営、インフラの構築・運用に携わっています。 システム開発依頼・お見積もり大歓迎! また、現在「WEBエンジニア」「モバイルエンジニア」「営業」「WEBデザイナー」「WEBディレクター」を積極採用中です! インターンや新卒採用も行っております。 以下よりご応募をお待ちしております! https://rightcode.co.jp/recruit