タケル@ソフトウェアエンジニア | 日々、学ぶ https://take-tech-engineer.com Study Life Mon, 03 Jan 2022 12:34:53 +0000 ja hourly 1 https://wordpress.org/?v=5.8.2 https://take-tech-engineer.com/wp-content/uploads/2021/12/cropped-DSCF4956-scaled-1-32x32.jpg タケル@ソフトウェアエンジニア | 日々、学ぶ https://take-tech-engineer.com 32 32 クラスごとの画像を簡単に見てみよう!IPyPlotの利用 https://take-tech-engineer.com/ipysplot-mnist/ https://take-tech-engineer.com/ipysplot-mnist/#respond Mon, 03 Jan 2022 09:22:02 +0000 https://take-tech-engineer.com/?p=88 はじめに

画像分類を行う際に、どのような特徴量や機械学習の手法を用いるかアイディアを膨らませるために、目視で画像を確認することがあります。Pythonのを利用する場合は、matplotlibライブラリで表示させるのが一般的です。しかし、インタラクティブなNotebookインターフェースの場合、膨大な数の画像をを表示させようとすると、実行⇄表示を繰り返す必要がり、非常にストレスが溜まります。そこで、この記事では、IPyPlotを活用した、誰でも簡単かつNotebookインターフェースでの快適な画像表示について紹介します。

IPyPlotを利用したコードの紹介

実行環境:Google Colaboratoory  2022/1/3

GitHubのREADME.mdを参考にコードを記載していきます。まず、Google ColabにIPyPlotをインストールします。

!pip install ipyplot

次に、IPyPlotをインポートします。また、この記事では例としてCIFAR10の画像を用いますので、kerasのデータセットをインポートします。

import ipyplot
from keras.datasets import cifar10

サンプルで利用するCIFAR10データセットは、60,000枚の32×32ピクセルのカラーの画像データで、1クラス6,000枚のデータで構成されています。また、それを分類する10個のラベル「飛行機、自動車、鳥、猫、鹿、犬、蛙、馬、船、トラック」で構成されています。CIFAR10をダウンロードするために、以下コードを実行します。

(x_train, y_train), (x_test, y_test) = cifar10.load_data()

x_trainには、5,000枚の画像が、y_trainには、5,000のラベルが保存されています。これらを、IPyPlotライブラリを活用して、ラベルごとに画像を表示させます。ipyplot.plot_class_tabsに、画像データとラベルを渡すだけなので、非常に簡単です。max_imgs_per_tabは、クラスごとの最大画像表示数になります。こちらのデフォルト値は30のため、適宜修正が必要です。さすがに、全ての画像を表示すると時間がかかるため、ここでは100を設定します。

ipyplot.plot_class_tabs(x_train, y_train.flatten(), max_imgs_per_tab=100)

全体コード

前章の全コードです。こちらをGoogle Colabにコピペすれば、動作しますので活用ください。

!pip install ipyplot

import ipyplot
from keras.datasets import cifar10

(x_train, y_train), (x_test, y_test) = cifar10.load_data()

ipyplot.plot_class_tabs(x_train, y_train.flatten(), max_imgs_per_tab=100)

参考資料

・IPyPlot
https://github.com/karolzak/ipyplot

・The CIFAR-10 dataset
https://www.cs.toronto.edu/~kriz/cifar.html

・Keras データセット CIFAR10画像分類
https://keras.io/ja/datasets/

]]>
https://take-tech-engineer.com/ipysplot-mnist/feed/ 0
【変数インスペクタ】Google Colabで、変数の型/形状を楽に確認 https://take-tech-engineer.com/google-colab-variable-inspector/ https://take-tech-engineer.com/google-colab-variable-inspector/#respond Sat, 01 Jan 2022 12:51:12 +0000 https://take-tech-engineer.com/?p=80 Google Colabでは、変数の型を確認するためには、print文を打って確認する必要があり、やや不便でした。しかし、最近のアップデートで変数インスペクタが実装され、楽に変数の型と形状が確認できるようになりました。
下記、画像の左側にある{x}をクリックすると変数インスペクタが表示され、変数の型と形状が確認できます。

]]>
https://take-tech-engineer.com/google-colab-variable-inspector/feed/ 0
完全固定!PyTorchの乱数シード https://take-tech-engineer.com/pytorch-randam-seed-fix/ https://take-tech-engineer.com/pytorch-randam-seed-fix/#respond Fri, 31 Dec 2021 12:54:26 +0000 https://take-tech-engineer.com/?p=75 機械学習では、再現性を持たせるために乱数シードを固定することが多いと思います。しかし、PyTorchを使っていると、固定しているつもりでも、なかなか出来ていない事が多いです。これは、PyTorchに関連するライブラリが多い事と、GPUのdeterministicを有効化する必要があるからです。この記事では、その固定方法についてのコードを紹介します。

PyTorchの乱数シード固定方法

PyTorch OfficialのREPRODUCIBILITYのページを参考に、Python、Numpy、PyTorchそれぞれの乱数ジェネレータを固定しないといけないことが分かります。また、nondeterministic algorithmsをしないように設定する必要があります。それらのコードを固定したコードは以下になります。

import random
import numpy as np
import torch

def torch_fix_seed(seed=42):
    # Python random
    random.seed(seed)
    # Numpy
    np.random.seed(seed)
    # Pytorch
    torch.manual_seed(seed)
    torch.cuda.manual_seed(seed)
    torch.backends.cudnn.deterministic = True
    torch.use_deterministic_algorithms = True


torch_fix_seed()

GPU(deterministic)を有効にすると、再現性はあがるが、処理パフォーマンスが低下するので注意が必要のようです。

参考情報

REPRODUCIBILITY(PyTorch Official)
https://pytorch.org/docs/stable/notes/randomness.html

機械学習におけるランダムシードの研究
https://qiita.com/si1242/items/d2f9195c08826d87d6ad

最短コースでわかる PyTorch &深層学習プログラミング(赤石 雅典)

PyTorchの基本的なプログラミングについて非常に分かりやすく書かれており、オススメです。乱数固定についてはp.352に書かれています。

]]>
https://take-tech-engineer.com/pytorch-randam-seed-fix/feed/ 0
Docker Desktop for WindowsのインストールとJupyterLabの起動 https://take-tech-engineer.com/docker-desktop-for-windows/ https://take-tech-engineer.com/docker-desktop-for-windows/#respond Fri, 31 Dec 2021 12:19:35 +0000 https://take-tech-engineer.com/?p=72 はじめに

Windows10にDocker Desktop for Windows(Hyper-V)をインストールし、JupyterLabを起動するまでをまとめました。

デバイスの仕様とDocker Desktopのシステム要件

デバイスの仕様

  • OS:Windows10 Pro
  • プロセッサ:AMD Ryzen 9 4900HS with Radeon Graphics 3.00 GHz
  • 実装RAM:16.0GB
  • システムの種類:64 ビット オペレーティング システム、x64 ベース プロセッサ

上記仕様のデバイスにDocker Desktop for Windowsをインストールしていきます。
Docker Desktopのシステム要件は下記です。

Docker Desktop(Hyper-V)のシステム要件

  • OS:Windows 10 64-bit: Pro 2004 (build 19041) or higher, or Enterprise or Education 1909 (build 18363) or higher. ※Windows 10/11 Homeの場合は、WSL2を使う必要があります。
  • Hyper-Vの有効化
  • プロセッサ:64 bit processor
  • 実装RAM:4GB

Hyper-Vの有効化

Docker Desktop for WindowsはHyper-Vを使用するので、有効化します。
※上記、システム要件にあるように、Windows Homeでは使えないため注意ください。Homeの場合は、WSL 2 backendで使うことで使用できるようになります。

  • コントロールパネルを開き、「プログラムと機能」をクリックします。下記画像赤枠の「Windowsの機能の有効化または無効化」をクリックします。

「Hyper-V」にチェックを入れ、OKをクリックします。Hyper-Vが有効化されるにはWindowsの再起動が必要なため、再起動を行います。

Docker Desktop for Windows のインストール

下記サイトの「Download for Windows」をクリックし、インストーラーをダウンロードします。
https://www.docker.com/products/docker-desktop

ダウンロードした「Docker Desktop Installer.exe」を実行し、インストールを進めて行きます。今回、WSL2は使わないので、「Install required Windows components for WSL2」のチェックボックスを外しても構いません。

Docker Desktopのアプリを起動すると、「タスクバー」の右端にある「通知領域」にDockerのアイコンが表示されます。このアイコンが表示されていればDocker Desktopが無事起動できているはずです。

  • 念の為、「Windows PowerShell」でdockerコマンドが使えるか確認します。Windows PowerShellで「docker version」を実行すれば、バージョンが確認できます。下記のように表示されれば、正しく動作しています。※dockerコマンドは、Docker Desktopの起動中のみ使えます。dockerコマンドが使えない場合は、Docker Desktopが起動しているか確認してみてください。
docker version

Client:
 Cloud integration: 1.0.17
 Version:           20.10.8
 API version:       1.41
 Go version:        go1.16.6
 Git commit:        3967b7d
 Built:             Fri Jul 30 19:58:50 2021
 OS/Arch:           windows/amd64
 Context:           default
 Experimental:      true

Server: Docker Engine - Community
 Engine:
  Version:          20.10.8
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.16.6
  Git commit:       75249d8
  Built:            Fri Jul 30 19:52:31 2021
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.4.9
  GitCommit:        e25210fe30a0a703442421b0f60afac609f950a3
 runc:
  Version:          1.0.1
  GitCommit:        v1.0.1-0-g4144b63
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

JupyterLabが使えるコンテナの起動

ここから、JupyterLabが使えるコンテナの起動を行います。まず、「タスクバー」の右端にある「通知領域」のDockerのアイコンを右クリックして、Dashboardをクリックします。現在、コンテナは起動していないため、下記画像のように「No containers running」と表示されるはずです。

Windows PowerShellを起動し、下記コマンドを実行します。jupyter公式でdockerイメージを配布しているため、簡単にコンテナを起動させることができます。

docker run -p 8888:8888 -e JUPYTER_ENABLE_LAB=yes jupyter/scipy-notebook:33add21fab64

PowerShellに以下が出力されるので、token「xxxxxxxxxxxxxxxxxxxx」の部分をコピーしておきます。

Or copy and paste one of these URLs:
        http://75a6e9fac17d:8888/lab?token=xxxxxxxxxxxxxxxxxxxx
  • Docker DesktopのDashboardを見ると、コンテナが起動していることが確認できます。今回は「gallant_ganguly」となっていますが、run時に名前を指定しないとランダムに名前が決められるので、同じ名前にはならないはずです。
  • コンテナ部分にカーソルを合わせると「OPEN IN BROWSER」が表示されるので、クリックします。

ログインにはtokenが求められますので、先程コピーしたtokenを貼り付けてログインします。

無事に、jupyterLabにログインできました。

参考資料

]]>
https://take-tech-engineer.com/docker-desktop-for-windows/feed/ 0
誰でもできるAnacondaで始めるデータサイエンス環境構築 for Windows https://take-tech-engineer.com/anaconda-for-windows/ https://take-tech-engineer.com/anaconda-for-windows/#respond Fri, 31 Dec 2021 12:15:26 +0000 https://take-tech-engineer.com/?p=70 はじめに

 機械学習/データサイエンスにおけるPython環境構築は、ライブラリの依存関係が強く、インストールに手間がかかり、初心者だとなかなかコーディングまで辿りつけません。そこで、ここでは誰でもデータサイエンスの環境を構築できるように、インストールから仮想環境の作成まで1から説明していきます。
 お手軽に環境構築するために、科学計算のためのPythonおよびR言語のディストリビューションであるAnacondaのインストールと、JupyterLabの起動までを説明します。またAnaconda Navigatorを用いた仮想環境の作成方法について説明します。
※この記事では、Windows10 64bitを使っています。

Anacondaのインストール

1. Anacondaホームページから、Products>Individual Edition
Anaconda | The World's Most Popular Data Science Platform
Anaconda is the birthplace of Python data science. We are a movement of data scientists, data-driven enterprises, and open source communities.
2. Downloadをクリックしてインストーラーをダウンロードしてください
3. ダウンロードしたインストーラーを実行し、以下の順で進めます

「Next」をクリックします

内容を確認後、「I Agree」をクリックします

「Just Me」を選択し、「Next」をクリックします

インストール先のフォルダを指定して、「Next」をクリックします
※パスに日本語が含まれているとエラーが発生することがあるため、避けること

「Add Anaconda to my PATH environment variables」、「Register Anaconda as my default Python 3.8」の両方ともチェックを外し、「Install」をクリックします

Completedが表示されれば、インストール完了です。「Next」をクリックします。

次に、以下画面が表示されます。それぞれ「Next」、「Finish」をクリックします

以上で、Anacondaのインストールは完了です

JupyterLabの起動

データサイエンスでよく用いられるJupyterLabの起動方法について説明していきます

スタートメニューから、Anaconda→Anaconda Navigatorをクリックします

HomeのJupyterLabのLaunchをクリックすれば、JupyterLabが起動します

LauncherのNotebook>Python3をクリックすればNotebookが起動します。
あとは、コードを書くだけです。GUIなので、簡単ですね。

Anacondaで新しい仮想環境を作成

上記の方法だと、base(root)環境でJupyterLabが起動しますが、様々なプロジェクトでこの環境を使い回すと、ライブラリの管理が非常に大変になり、開発が面倒になります。そこで、プロジェクトごとに環境を切り替えることで、その手間を省きます。Anacondaには、Anaconda NavigatorというGUIのツールがあり、手軽に仮想環境の作成を行うことができます。

Anaconda Navigatorを起動し、Environmentsをクリックし、Createをクリックします

Create new environmentウィンドウが立ち上がるので、Nameを記載して、Createをクリックします。新しく仮想環境が作成され、最低限のライブラリがインストールされていることが確認できます。この環境に、Pytorchを試しにインストールしていきます。

Not installedを選択後、右上のSearch Packagesにpytorchと入力します

PytorchのチェックボックスをONにし、Applyをクリックします。

Pytorchと依存関係があるライブラリのインストールを要求されるのでApplyをクリックします。

Pytorch及び依存関係にあるライブラリがインストールされていることが確認できます。なお、JupyterLabを使いたい場合は、Pytorchのインストールと同様に、Search Packagesから検索し、インストールすれば使えるようになります。
以上で完了です。Anaconda Navigatorを用いれば、GUIで管理できるので使いやすいですね。

]]>
https://take-tech-engineer.com/anaconda-for-windows/feed/ 0
matplotlibを一瞬で日本語表示対応させよう! https://take-tech-engineer.com/matplotlib-japanese/ https://take-tech-engineer.com/matplotlib-japanese/#respond Thu, 30 Dec 2021 12:43:37 +0000 https://take-tech-engineer.com/?p=60 matplotlibの日本語文字化けについて

matplotlibは、標準で日本語に対応しておらず、日本語を使用すると文字化けが発生し、正しく表示されません。例えば、以下のコードをGoogle Colabで実行すると、□□と表示されてしまい文字化けしてしまいます。ここでは、誰でも簡単に日本語表示できる方法を紹介します。

import matplotlib.pyplot as plt

plt.plot([1, 2, 3, 4])
plt.xlabel('縦軸')
plt.ylabel('横軸')
plt.show()

japanize-matplotlibによる日本語表示対応

japanize-matplotlibを利用することで、日本語表示対応できます。pipコマンドでインストールし、importするだけなので、簡単にすぐ使うことができます。

以下、コードで正しく日本語表示されるか確認します。

!pip install japanize_matplotlib
import matplotlib.pyplot as plt
import japanize_matplotlib

plt.plot([1, 2, 3, 4])
plt.xlabel('縦軸')
plt.ylabel('横軸')
plt.show()

正しく、日本語が表示されていることが確認できました。

]]>
https://take-tech-engineer.com/matplotlib-japanese/feed/ 0