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

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

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

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

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

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

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

今回確認した内容は、現場で使える! PyTorch開発入門 深層学習モデルの作成とアプリケーションへの実装 (AI & TECHNOLOGY) の 4.5 DCGANによる画像生成(P.093 – P.104) である。

※1. プログラムの詳細は, 書籍を参考(P.093 – P.104)にして下さい.
※2. 書籍上は, 訓練した生成モデル, 識別モデルの保存については, 書かれていたが, ロードについては記載されてなかったので, 動作確認時に, 参照サイト① ~ 参照サイト② を参考に, 動作確認した.
※3. 参照サイト② (“A common PyTorch convention is to save models using either a .pt or .pth file extension.”) にあるように, 訓練した生成モデル, 識別モデルの拡張子を, “.pth” で保存したため, 書籍上の “.prm” と異なっている.
※4. 生成モデルをロードした際の動作確認は, 訓練済みの生成モデルをロードする形で行ったので, 非常に短時間(1秒未満)で, 画像の生成を確認できた.


■生成モデル, 識別モデルの確認(書籍から一部抜粋・加筆).

■実行結果.


■生成モデル, 識別モデルの訓練~画像生成(書籍から一部抜粋・加筆).

■実行結果.


■訓練済み生成モデルのロード~画像生成(書籍から一部抜粋・加筆).

■実行結果.


■以上の実行結果から, 以下のことが分かった.

3. 画像生成失敗時(epoch 0)

4-1. 画像生成成功時(epoch 0)

4-2. 画像生成成功時(epoch 50)

4-3. 画像生成成功時(epoch 100)

5. 訓練済み生成モデルによる画像生成


■参照サイト
【参照URL①】Saving torch models
【参照URL②】SAVING AND LOADING MODELS

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

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

C++の練習を兼ねて, AtCoder Beginner Contest 056 の 問題C(Go Home), 問題D(No Need) を解いてみた.

■感想.
1. 問題C, 問題D ともに, 時間はかかったもの(※特に, 問題D)の, 解説見ずに解けたので, 良かったと思う.
2. 当方の解答方針は, 入力値N(カードの枚数), K(よい集合の判定条件) を, 再帰的に, どんどん縮小していく方針を採用した.


本家のサイトARC070 / ABC056 解説をご覧下さい.


■C++版プログラム(問題C/AC版).

■C++版プログラム(問題D/WA版, 2_042.txt で, Wrong Answer).

■C++版プログラム(問題D/AC版).

■デバッグ出力例(問題D/AC版).
[入力例] について, 最初から3つ目までを, 本家のサイトから, 抜粋している.

■参照サイト
AtCoder Beginner Contest 056

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

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

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

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

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

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

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

今回確認した内容は、現場で使える! PyTorch開発入門 深層学習モデルの作成とアプリケーションへの実装 (AI & TECHNOLOGY) の 4.4 CNN回帰モデルによる画像の高解像化(P.088 – P.092) である。

※1. プログラムの詳細は, 書籍を参考(P.088 – P.092)にして下さい.
※2. 書籍上は, 訓練したCNNモデルの保存/ロードについて, 記載されてなかったので, 動作確認時に, 参照サイト① ~ 参照サイト③ を参考に, プログラムを追記した.
-> なお, 訓練時に, epoch = 10 で, 800秒以上かかることが分かったため, 訓練したCNNモデルを, 保存したいという動機があったためである.
※3. 高解像度化の動作確認は, 訓練したCNNモデルをロードする形で行ったので, 非常に短時間(1秒未満)で, 画像ファイルの出力を確認できた.


■CNNの訓練(書籍CNNの訓練を抜粋・加筆).

■実行結果.


■CNNモデルによる高解像度化の動作確認(書籍上の高解像度化の内容を抜粋・加筆).

■実行結果.


■以上の実行結果から, 以下のことが分かった.


■参照サイト
【参照URL①】Saving and loading a model in Pytorch?
【参照URL②】pytorch/examples
【参照URL③】Best way to save a trained model in PyTorch?

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

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

C++の練習を兼ねて, AtCoder Beginner Contest 055 の 問題C(Scc Puzzle), 問題D(Menagerie) を解いてみた.

■感想.
問題C, 問題D ともに, 時間はかかったもの(※特に, 問題D)の, 解説見ずに解けたので, 良かったと思う.
※結局, 解説と同じ方針だった.


本家のサイトABC055 / ARC069 解説をご覧下さい.


■C++版プログラム(問題C/AC版).

■C++版プログラム(問題D/AC版).

■参照サイト
AtCoder Beginner Contest 055

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

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

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

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

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

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

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

今回確認した内容は、現場で使える! PyTorch開発入門 深層学習モデルの作成とアプリケーションへの実装 (AI & TECHNOLOGY) の 4.4 CNN回帰モデルによる画像の高解像化(P.083 – P.088) である。

※1. プログラムの詳細は、書籍を参考(P.083 – P.088)にして下さい。
※2. ConvTranspose2d が出てきたので, 改めて本家のサイトを確認し, プログラム上に, 計算式等をメモした.


■CNN回帰モデル(書籍CNNモデルを抜粋・加筆).

■実行結果(input size = torch.Size([1, 3, 128, 128]) の 場合).

■実行結果(input size = torch.Size([1, 3, 32, 32]) の 場合).


■以上の実行結果から, 以下のことが分かった.



■参照サイト
【参照URL①】torch.nn.Conv2d
【参照URL②】torch.nn.BatchNorm2d
【参照URL③】torch.nn.ConvTranspose2d

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

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

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

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

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

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

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

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

今回確認した内容は、現場で使える! PyTorch開発入門 深層学習モデルの作成とアプリケーションへの実装 (AI & TECHNOLOGY) の 4.3.1 転移学習(P.072 – P.082) である。

※1. プログラムの詳細は、書籍を参考(P.072 – P.082)にして下さい。
※2. 転移学習の挙動について, もう少し深めたかったので, 再度, 復習した.
※3. 画像を出力させるなどして, 再度動作確認してみた.


■転移学習(自作CNNモデル).

■実行結果(自作CNNモデル, batch size = 64, epoch = 10).


■転移学習(書籍CNNモデル).

■実行結果(書籍CNNモデル, batch size = 32, epoch = 10).


■以上の実行結果から, 以下のことが分かった.


■参照サイト
【参照URL①】定番のConvolutional Neural Networkをゼロから理解する.
【参照URL②】Adding a dimension to a tensor in PyTorch.
【参照URL③】How to turn a list of tensor to tensor?
【参照URL④】andreh7/ecal-rechits-pytorch-training
【参照URL⑤】TRANSFER LEARNING TUTORIAL

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

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

C++の練習を兼ねて, AtCoder Beginner Contest 058 の 問題C(怪文書 / Dubious Document), 問題D(井井井 / ###) を解いてみた.

■感想.
1. 問題C, 問題D ともに, 時間はかかったもの(※特に, 問題D)の, 解説見ずに解けたので, 良かったと思う.
2. 問題D は, 最初, 同じ長方形を複数回カウントしてよいものと理解したが, 以下の入力値(本家のサイトにあるもの)で,
確認したところ, 誤答となったので, “同じ長方形は, ただ一度だけカウント” すると理解して, ロジックを組み直したものである.


本家のサイトABC058 / ARC071 解説をご覧下さい.


■C++版プログラム(問題C/AC版).

■C++版プログラム(問題D/AC版).

■参照サイト
AtCoder Beginner Contest 058

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

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

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

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

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

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

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

今回確認した内容は、現場で使える! PyTorch開発入門 深層学習モデルの作成とアプリケーションへの実装 (AI & TECHNOLOGY) の 4.3.1 転移学習(P.072 – P.082) である。

※1. プログラムの詳細は、書籍を参考(P.072 – P.082)にして下さい。
※2. CNN の理解をもう少し深めたかったので, 再度, 復習した.
※3. 前回と, 異なるCNNモデルを適当に構築して, 再度動作確認してみた.


■転移学習(書籍の一部を抜粋・改変).

※上記ソースについて, 下記のようなコメントの読み替えが必要です.
nn.Conv2d(3, 32, 4, stride=2) … # 111 = {(H)224 + 2 * (P)0 – (KH)4} / (SH)2 + 1
nn.Conv2d(32, 96, 3, stride=2) … # 18 = {(H)37 + 2 * (P)0 – (KH)3} / (SH)2 + 1
nn.Conv2d(96, 192, 4) … # 6 = {(H)9 + 2 * (P)0 – (KH)4} / (SH)1 + 1

■実行結果(epoch = 10).


■以上の実行結果から, 以下のことが分かった.