0
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

PyTorch学習メモ

Posted at

PyTorchとは

PyTorchは、コンピュータビジョンや自然言語処理で利用されているTorch(英語版)を元に作られた、Pythonのオープンソースの機械学習ライブラリである。最初はFacebookの人工知能研究グループAI Research lab(FAIR)により開発された。PyTorchはフリーでオープンソースのソフトウェアであり、修正BSDライセンスで公開されている。Pythonインターフェイスの方が洗練されており、活発に開発が行われているが、C++インターフェイスも存在する。

さまざまなディープラーニングのソフトウェアがPyTorchを利用して構築されており、その中には、UberのPyro、HuggingFaceのTransformers、Catalystなどがある。

PyTorchは次の2つの高度な機能を備えている。

・強力なGPUサポートを備えた(NumPyのような)テンソル演算ができる
・テープベースの自動微分システムの上に構築された深層ニューラルネットワークが利用できる

Dockerで環境構築

Dockerfile
FROM pytorch/pytorch:1.3-cuda10.1-cudnn7-runtime

RUN pip install --upgrade pip setuptools \
  && pip install matplotlib jupyter
docker-compose.yml

version: '3.3'
services:
  pytorch:
    container_name: pytorch
    build: .
    tty: true
    stdin_open: true
    ipc: host
    ports:
      - "8889:8889"
    volumes:
      - .:/opt/pytorch
    environment:
      - JUPYTER_CONFIG_DIR=/opt/pytorch
    working_dir: /opt/pytorch

jupyter_notebook_config.py
c = get_config()
c.NotebookApp.ip = '0.0.0.0'
c.NotebookApp.open_browser = False
c.NotebookApp.port = 8889
c.NotebookApp.token = ''

Jupyter起動までの手順

$ docker-compose up -d pytorch
Creating pytorch ... done

$ docker exec -it pytorch bash

# pwd
/opt/pytorch

# jupyter notebook --allow-root &

後片付けの手順

# exit

$ docker-compose stop
Stopping pytorch ... done

$ docker-compose rm
Going to remove pytorch
Are you sure? [yN] y
Removing pytorch ... done

DEEP LEARNING WITH PYTORCH: A 60 MINUTE BLITZ

DEEP LEARNING WITH PYTORCH: A 60 MINUTE BLITZ を用いて、基本的な操作からCIFAR10のデータセットを用いた画像分類までを実施。

このチュートリアルは5つに分かれていて、それぞれどんな内容なのかというと、

What is PyTorch?

  • 基本的なTensorの操作について
  • Numpy Array <=> Tensor

Autogad: Automatic Differentiation

  • Gradientsについて

Neural Networks

  • NNの定義について
  • Loss functionについて
  • バックプロパゲーションについて
  • Optimizerについて

Training a Classifier

  • CIFAR10データセットについて
  • データセットの準備
  • CNNを定義
  • Loss function と Optimizerを定義
  • ネットワークを学習させる
  • テストデータを使って分類
  • モデルの保存、読み込み
  • 全体のAccuracyの確認
  • GPUを使うには

Optional: Data Parallelism

  • 複数のGPUを使用する方法について

チュートリアルを実施したノートブック

チュートリアルを実施したノートブックはGitHubにPush。

参考

0
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?