PyTorch の動作確認をしてみた(6)

1. 環境は、Window 10 Home (64bit) 上で行った。

2. Anaconda3 (64bit) – Spyder上で、動作確認を行った。

3. python の バージョンは、python 3.6.5 である。

4. pytorch の バージョンは、pytorch 0.4.1 である。

5. GPU は, NVIDIA社 の GeForce GTX 1050 である。

6. CPU は, Intel社 の Core(TM) i7-7700HQ である。

今回確認した内容は、現場で使える! PyTorch開発入門 深層学習モデルの作成とアプリケーションへの実装 (AI & TECHNOLOGY) の 4.2.2 CNNの構築と学習(P.067 – P.071) である。
Fashion-MNIST を 使った, CNN の 画像分類 について書かれていたので, 少し動作確認を行った.
また, tqdm の使い方も確認できた.

※プログラムの詳細は、書籍を参考(P.067 – P.071)にして下さい。


■Fashion-MNISTの学習(GPU版).

■実行結果(GPU版).


■Fashion-MNISTの学習(CPU版).

■実行結果(CPU版).


■以上の実行結果から, 以下のことが分かった.
① 処理速度.
実行結果(GPU版): Elapsed Time: 189.46908950805664[sec]
実行結果(CPU版): Elapsed Time: 1290.8199858665466[sec]
-> GPU版 が CPU版 に比べて, 約6.8倍早く処理できたことが分かった.

② tqdm の 使い方.
著書上の tqdm.tqdm(enumerate~(略)~ では, 動作しなかったので, tqdm(enumerate~(略)~ で 確認した.


■参考書籍
現場で使える! PyTorch開発入門 深層学習モデルの作成とアプリケーションへの実装 (AI & TECHNOLOGY)

PyTorch の動作確認をしてみた(5)

1. 環境は、Window 10 Home (64bit) 上で行った。

2. Anaconda3 (64bit) – Spyder上で、動作確認を行った。

3. python の バージョンは、python 3.6.5 である。

4. pytorch の バージョンは、pytorch 0.4.1 である。

5. GPU は, NVIDIA社 の GeForce GTX 1050 である。

6. CPU は, Intel社 の Core(TM) i7-7700HQ である。

今回確認した内容は、現場で使える! PyTorch開発入門 深層学習モデルの作成とアプリケーションへの実装 (AI & TECHNOLOGY) の 3.3.1 Dropoutによる正則化(P.052 – P.055) である。
Dropoutによる正則化について書かれていたので, 少し動作確認を行った.

※プログラムの詳細は、書籍を参考(P.052 – P.055)にして下さい。


■Dropout無し.

■実行結果(Dropout無し).


■Dropout有り.

■実行結果①(Dropout有り, r = 0.3).

■実行結果②(Dropout有り, r = 0.5 ※書籍と同じ).

■実行結果③(Dropout有り, r = 0.7).


■以上の実行結果から, 以下のことが分かった.
① Dropout を 設定しないと, 過学習が発生していることが分かった.

② Dropout を 設定すると, 過学習を抑制できる分かった.

③ Dropout に 設定する r の値を変えると, 表示されるグラフも大きく変わってくることが分かった.


■参考書籍
現場で使える! PyTorch開発入門 深層学習モデルの作成とアプリケーションへの実装 (AI & TECHNOLOGY)

PyTorch の動作確認をしてみた(4)

1. 環境は、Window 10 Home (64bit) 上で行った。

2. Anaconda3 (64bit) – Spyder上で、動作確認を行った。

3. python の バージョンは、python 3.6.5 である。

4. pytorch の バージョンは、pytorch 0.4.1 である。

5. GPU は, NVIDIA社 の GeForce GTX 1050 である。

6. CPU は, Intel社 の Core(TM) i7-7700HQ である。

今回確認した内容は、現場で使える! PyTorch開発入門 深層学習モデルの作成とアプリケーションへの実装 (AI & TECHNOLOGY) の 3.1 MLPの構築と学習(P.046 – P.049) である。
GPU転送の方法について書かれていたので, 少し動作確認を行った.

※プログラムの詳細は、書籍を参考(P.046 – P.049)にして下さい。


■①MLPの構築例(CPU版/合計2層).

■実行結果(CPU版/合計2層).


■②MLPの構築例(GPU版/合計2層).

■実行結果(GPU版/合計2層).


■③MLPの構築例(CPU版/合計20層).

■実行結果(CPU版/合計20層).


■④MLPの構築例(GPU版/合計20層).

■実行結果(GPU版/合計20層).


■注意点として, 以下のことが分かった.
① 層の数を増やしても, 必ずしも, 正解率が上がらない点が分かった.
実行結果(CPU版/合計2層): 0.998330550918197
実行結果(CPU版/合計20層): 0.7907623817473567
を比較すると, 実行結果(CPU版/合計2層) の 前者の方が, 正解率が高いことが分かる.

実行結果(GPU版/合計2層): 0.9977740678909294
実行結果(GPU版/合計20層): 0.887590428491931
を比較すると, 実行結果(GPU版/合計2層) の 前者の方が, 正解率が高いことが分かる.

② ここでのMLPにおいては, GPU転送しても, 高速化するわけではないことが分かった.
実行結果(CPU版/合計2層): Elapsed Time: 1.666921854019165[sec]
実行結果(GPU版/合計2層): Elapsed Time: 3.92018461227417[sec]
比較すると, 実行結果(CPU版/合計2層) の 前者の方が, 処理が早く完了していたことが分かる.

実行結果(CPU版/合計20層): Elapsed Time: 7.015232563018799[sec]
実行結果(GPU版/合計20層): Elapsed Time: 14.03317642211914[sec]
比較すると, 実行結果(CPU版/合計20層) の 前者の方が, 処理が早く完了していたことが分かる.


■参考書籍
現場で使える! PyTorch開発入門 深層学習モデルの作成とアプリケーションへの実装 (AI & TECHNOLOGY)

■参照サイト
PyTorch (6) Convolutional Neural Network.

PyTorch の動作確認をしてみた(3)

1. 環境は、Window 10 Home (64bit) 上で行った。

2. Anaconda3 (64bit) – Spyder上で、動作確認を行った。

3. python の バージョンは、python 3.6.5 である。

4. pytorch の バージョンは、pytorch 0.4.1 である。

5. GPU は, NVIDIA社 の GeForce GTX 1050 である。

今回確認した内容は、現場で使える! PyTorch開発入門 深層学習モデルの作成とアプリケーションへの実装 (AI & TECHNOLOGY) の 2.3.2 PyTorchで線形回帰モデル(P.032 – P.034) である。
線形回帰について, 少し理解を深めるため, 書籍例から, 若干異なるパターンについて, 線形回帰モデルのパラメータを求める動作確認を行った.

※プログラムの詳細は、書籍を参考(P.032 – P.034)にして下さい。


■線形回帰モデル例.

■実行結果①(data_count = 10).

■実行結果②(data_count = 10).

■実行結果③(data_count = 500).

■注意点として, 以下のことが分かった.
① torch.tensor([2, 3, 4]) と torch.Tensor([2, 3, 4]) は, 別物であること(※tensor/Tensor の 誤記ではない点に注意).
※参照サイトに, “torch.Tensor is an alias for the default tensor type (torch.FloatTensor).” の説明があった.

② サンプル数(data_count) が, 10 の場合は, 実行結果②(data_count = 10) にあるように, 正解値 [2., 3., 4.] から, 大きく外れた値 (ここでは, [-0.0309, -9.4697, 2.3776]) で出力される場合が確認された.

③ サンプル数(data_count) が, 500 の場合は, 正解値 [2., 3., 4.] から, 大きく外れた値を確認出来なかったので, サンプル数 を 増やすことで, 線形回帰の精度が高まったと理解される.
※[F5]キー連打で, 200回程度試してみた.


■参考書籍
現場で使える! PyTorch開発入門 深層学習モデルの作成とアプリケーションへの実装 (AI & TECHNOLOGY)

■参照サイト
torch.Tensor

PyTorch の動作確認をしてみた(2)

1. 環境は、Window 10 Home (64bit) 上で行った。

2. Anaconda3 (64bit) – Spyder上で、動作確認を行った。

3. python の バージョンは、python 3.6.5 である。

4. pytorch の バージョンは、pytorch 0.4.1 である。

5. GPU は, NVIDIA社 の GeForce GTX 1050 である。

今回確認した内容は、現場で使える! PyTorch開発入門 深層学習モデルの作成とアプリケーションへの実装 (AI & TECHNOLOGY) の 1.3 Tensorと自動微分(P.022 – P.023) である。
自動微分について, 少し理解を深めるため, 簡単な動作確認を行った.

※プログラムの詳細は、書籍を参考(P.022 – P.023)にして下さい。


■自動微分例①.

■実行結果①.




■自動微分例②.

■実行結果②.


■自動微分例③.

■実行結果③.


■自動微分例④.

■実行結果④.


■注意点として, 以下のことが分かった.
① a に, requires_grad=False を指定すると,
RuntimeError: element 0 of tensors does not require grad and does not have a grad_fn
のようなエラーが出力されること.

② a が float型でないと,
RuntimeError: Only Tensors of floating point dtype can require gradients
のようなエラーが出力されること.

③ b が スカラーでないと,
RuntimeError: grad can be implicitly created only for scalar outputs
のようなエラーが出力されること.


■参考書籍
現場で使える! PyTorch開発入門 深層学習モデルの作成とアプリケーションへの実装 (AI & TECHNOLOGY)

■参照サイト
Autograd: automatic differentiation

PyTorch の動作確認をしてみた(1)

1. 環境は、Window 10 Home (64bit) 上で行った。

2. Anaconda3 (64bit) – Spyder上で、動作確認を行った。

3. python の バージョンは、python 3.6.5 である。

4. pytorch の バージョンは、pytorch 0.4.1 である。

5. GPU は, NVIDIA社 の GeForce GTX 1050 である。

今回確認した内容は、現場で使える! PyTorch開発入門 深層学習モデルの作成とアプリケーションへの実装 (AI & TECHNOLOGY) の 該当ページ(P.002 – P.016) である。
pytorch の install から 簡単な動作確認を行った.

※プログラムの詳細は、書籍を参考(P.002 – P.016)にして下さい。


■PyTorch の install.

■対象プログラム(Spyder上).

■実行結果

※ちなみに, Spyder上で, 出力に, runfile(…) が表示されるので, 非表示に出来ないのかを調べたところ, 下記, 参照サイト③ にあるように, Spyder 4, to be released in 2019 で対応する可能性があるとのこと.


■参考書籍
現場で使える! PyTorch開発入門 深層学習モデルの作成とアプリケーションへの実装 (AI & TECHNOLOGY)

■参照サイト
【参照サイト①】Welcome to PyTorch Tutorials
【参照サイト②】What is PyTorch?
【参照サイト③】hidding the runfile() command in Spyder