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).


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


■参照サイト
【参照URL①】定番のConvolutional Neural Networkをゼロから理解する.

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

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

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 の理解が怪しかったので, 復習した.


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

※上記ソースについて, 下記のようなコメントの読み替えが必要です.
nn.Conv2d(3, 32, 5) … # 220 = {(H)224 + 2 * (P)0 – (KH)5} / (SH)1 + 1
nn.Conv2d(32, 64, 5) … # 106 = {(H)110 + 2 * (P)0 – (KH)5} / (SH)1 + 1
nn.Conv2d(64, 128, 5) … # 49 = {(H)53 + 2 * (P)0 – (KH)5} / (SH)1 + 1

■実行結果(epoch = 10).


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


■参照サイト
【参照URL①】定番のConvolutional Neural Networkをゼロから理解する.
【参照URL②】torch.Tensor
【参照URL③】andreh7/ecal-rechits-pytorch-training

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

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

C++の練習を兼ねて, AtCoder Beginner Contest 060 の 問題C(Sentou), 問題D(Simple Knapsack) を解いてみた.

■感想.
1. 問題C は, 解答方針が, 見つかったので, 解答出来た.
2. 問題D は, 解答方針が見えなかったので, 解説を読んでから, その日本語を, プログラムに翻訳したが, なかなか大変だった(コンパクトに纏めることが出来なかった).


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


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

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

■参照サイト
AtCoder Beginner Contest 060

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

C++の練習を兼ねて, AtCoder Beginner Contest 062 の 問題C(Chocolate Bar), 問題D(3N Numbers) を解いてみた.

■感想.
1. 両問題とも, 解答方針が間違えていたので, 解けなかった.
2. 問題C では, 長方形を, 同じ方向に3分割するパターンが, H or W が 3の倍数という先入観で解いたため, 正答に至らなかった.
-> 例として, [入力例] 5 13 に対し, WA版だと 8, AC版だと, 5 というように出力されるので, WA版のロジック誤りについて, 具体的に理解できた.
3. 問題D では, 中央N項の数列に着目して, 数列a’ の前半N要素の総和, 数列a’ の後半N要素の総和 を 考えてみたが, 上手く行かなかったので, 解答通りに実装し直した.
※LL ans = -99999999999; からスタートして, 最大値を計算しようとすると, 1_10.txt, 2_02.txt で, Wrong Answerとなるので, LL ans = -100000000000000; (10の5乗 × 10の9乗 の符号を マイナス にした数)からスタートして, 最大値を計算する必要があるので注意.
4. 優先順位付きキュー std::priority_queue を使う練習が出来たと思われる(※存在を知らなかった(汗)).


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


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

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


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

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

■参照サイト
AtCoder Beginner Contest 062

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

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

■感想.
1. 左括弧 ‘)’ を軸に考えてみたところ, 何とか解答できた.
2. 標準ライブラリ std::deque を使う練習が出来たと思われる.


本家のサイトAtCoder Beginner Contest 064 解説をご覧下さい.


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


■参照サイト
AtCoder Beginner Contest 064

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

C++の練習を兼ねて, AtCoder Grand Contest 028 の 問題B(Removing Blocks) を解いてみた.

■感想.
1. 時間内で, 解答方針が全く分からなかったので, コンテスト終了後に, 解答を確認して, コーディングしてみた.
2. ブロックの連結についての解説が, なるほどと感心したが, 実際に答案へ反映する作業は, かなり大変だった(汗).


本家のサイトAGC 028 解説をご覧下さい.


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


■入力/出力例

■参照サイト
AtCoder Grand Contest 028