• トップ
  • ブログ一覧
  • PyTorchの特徴とインストール方法
  • PyTorchの特徴とインストール方法

    広告メディア事業部広告メディア事業部
    2020.01.20

    IT技術

    PyTorchとは

    PyTorch(パイトーチ)とは、Pythonの機械学習ライブラリの一つで、現在最もアツいフレームワークです。

    前身は、Lua言語で提供されていた「機械学習ライブラリTorch(トーチ)」です。

    そのPython版が PyTorch になります。

    制作しているのは、かの有名な Facebook で、日本で開発されているChainer(チェイナー)に似ていることもしばしば取り上げられています。

    PyTorchの特徴

    特徴としては、その扱いやすさにあります。

    NumPy の配列を操作するようにデータを扱うことができ、さらにネットワークの構築は Keras のように、初心者にもコーディングしやすい・理解しやすい仕様になっていることが特徴です。

    さらに最近、Chainer を開発していた Preferred Networks社 は、PyTorch に順次切り替えると発表したこともあり、さらに今後注目を集めることでしょう。

    インストールの前に、多層パーセプトロンのおさらい

    ※インストール目的で来た人は、こちらの章は飛ばしてください。

    インストール作業の前に・・・

    PyTorch を使うということは「機械学習」目的の人がほとんどだと思います。

    ということで、次回より【Pytorch入門】として連載を初めていきます。

    そして、まずは、簡単な多層パーセプトロンから実装してみたいと思っています。

    そのため、「多層パーセプトロン」について簡単におさらいしてみたいと思います。

    多層パーセプトロン (MLP: Multi-Layer Perceptron)

    pytorch_mlp_mnist

    多層パーセプトロン(通称MLP)とは、複数の形式ニューロンからなる層を複数用意した、ニューラルネットワークの最も単純な形です。

    畳み込みニューラルネットワークなどと比べると、性能は劣る場合が多いです。

    しかし、ニューラルネットワークの基本形であり、様々なデータに対応できるので、一度実装しておいて損はないはずです!

    今回は、手書き数字(MNIST)データセットを学習させていきますが、学習法は最もメジャーな誤差逆伝播学習法(BP: Backpropagation)です。

    この辺りの記事は、弊社ブログでも解説しているので是非ご一読ください!

    ブログ記事

    featureImg2019.05.14【徹底解説】ニューラルネットワークって一体なに?【人工知能】人工知能とニューラルネットワークの違い近年、至る分野で注目を浴びている「人工知能」ですが、そもそもどういった仕組みなの...

    featureImg2019.05.30多層パーセプトロンを実装してみよう!【機械学習】多層パーセプトロンとは?今回は、現在の機械学習の基盤となっている「多層パーセプトロン」を実装します。また、それと並行し...

    featureImg2019.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入門】の連載では、簡単な多層パーセプトロンから実装してみたいと思います!

    ネット上には、畳み込みニューラルネットワークの実装記事はたくさんあると思います。

    ただ、多層パーセプトロンのような単純で軽量なネットワーク実装はあまり紹介されていないので必見です!

    是非ご期待ください!

    こちらの記事もオススメ!

    featureImg2020.07.28機械学習 特集知識編人工知能・機械学習でよく使われるワード徹底まとめ!機械学習の元祖「パーセプトロン」とは?【人工知能】ニューラルネ...

    featureImg2020.07.17ライトコード的「やってみた!」シリーズ「やってみた!」を集めました!(株)ライトコードが今まで作ってきた「やってみた!」記事を集めてみました!※作成日が新し...

    おすすめのPyTorch本

    つくりながら学ぶ! PyTorchによる発展ディープラーニング
    つくりながら学ぶ! PyTorchによる発展ディープラーニング

     

    広告メディア事業部

    広告メディア事業部

    おすすめ記事