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)

C++ の動作確認をしてみた(22)

C++の練習を兼ねて, AtCoder Beginner Contest 068 の 問題D(Decrease (Contestant ver.))を解いてみた.

■感想.
1. 問題を読んでも, 方針が全く見えなかった.
2. 解説を読んだところ, 目から鱗で, なるほど, と感心させられ, 大変勉強になったと思う.


本家のサイトAtCoder Regular Contest 079 Editorialをご覧下さい.


■C++版プログラム.


■参照サイト
AtCoder Beginner Contest 068

C++ の動作確認をしてみた(21)

C++の練習を兼ねて, AtCoder Beginner Contest 068 の 問題C(Cat Snuke and a Voyage)を解いてみた.

■感想.
島1 から 島N に行くために経由する島 を 如何にして, 探索するか, という点が, 面白いと思った.


本家のサイトAtCoder Regular Contest 079 Editorialをご覧下さい.


■C++版プログラム.


■参照サイト
AtCoder Beginner Contest 068

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

C++ の動作確認をしてみた(20)

C++の練習を兼ねて, AtCoder Beginner Contest 069 の 問題D(Grid Coloring)を解いてみた.

■感想.
1. 一筆書きのアイデアが, AtCoder Beginner Contest 109 の 問題D (Make Them Even) に類似していたので, 興味深かった.
2. コーディング後, 解説を見たら, 全く同じ方針だったので, 良かったと思う.


本家のサイトABC #069 / ARC #080 Editorialをご覧下さい.


■C++版プログラム.


■入力/出力例

■参照サイト
AtCoder Beginner Contest 069

C++ の動作確認をしてみた(19)

C++の練習を兼ねて, AtCoder Beginner Contest 069 の 問題C(4-adjacent)を解いてみた.

■感想.
1. 解答方針が決まるまで, 試行錯誤したものの, 何とかACになったので良かったと思う.
2. コーディング後, 解説を見たら, 多分同じ方針だったので, とりあえず良かったと思う.


本家のサイトABC #069 / ARC #080 Editorialをご覧下さい.


■C++版プログラム.


■参照サイト
AtCoder Beginner Contest 069

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

C++ の動作確認をしてみた(18)

C++の練習を兼ねて, AtCoder Beginner Contest 071 の 問題D(Coloring Dominoes)を解いてみた.

■感想.
1. 動的計画法(DP)の練習問題と見て, 時間かかったものの(汗), 何とかACになったので良かったと思う.
2. コーディング後, 解説を見たら, おおよそ同じ方針だったので, とりあえず良かったと思う.


本家のサイトAtCoder Beginner Contest 071 / AtCoder Regular Contest 081 解説をご覧下さい.


■C++版プログラム.


■補足.
以下のような, 入力例のテストケースが, 通過するようにプログラムの修正等を実施している.

■参照サイト
AtCoder Beginner Contest 071