• トップ
  • ブログ一覧
  • 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による発展ディープラーニング

     

    ライトコードでは、エンジニアを積極採用中!

    ライトコードでは、エンジニアを積極採用しています!社長と一杯しながらお話しする機会もご用意しております。そのほかカジュアル面談等もございますので、くわしくは採用情報をご確認ください。

    採用情報へ

    広告メディア事業部
    広告メディア事業部
    Show more...

    おすすめ記事

    エンジニア大募集中!

    ライトコードでは、エンジニアを積極採用中です。

    特に、WEBエンジニアとモバイルエンジニアは是非ご応募お待ちしております!

    また、フリーランスエンジニア様も大募集中です。

    background