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

C++の練習を兼ねて, AtCoder Beginner Contest 045 の 問題C(たくさんの数式 / Many Formulas) ~ 問題D (すぬけ君の塗り絵 / Snuke’s Coloring) を解いてみた.

■感想.
1. とりあえず, 解説見ずに解けたので良かったと思う.
2. 問題C は, 方針を決めることが出来たが, 結構ゴリゴリ書く羽目になってしまったように思う.
3. 問題D は, 計算量を減らすのに, 黒いマスに関係する3行3列の連続するマス目に限定させる方法に, 辿り着いたので解答出来たと思う.
4. 解説と, ほぼ同じ方針だったので, 及第点は, 取れたと思う.


本家のサイトABC 045 / ARC 061 解説をご覧下さい.


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

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

■参照サイト
AtCoder Beginner Contest 045

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

C++の練習を兼ねて, AtCoder Beginner Contest 043 の 問題D(アンバランス / Unbalanced) を解いてみた.

■感想.
1. とりあえず, 解説見ずに解けたので良かったと思う.
2. 問題D は, 過半数の解釈に時間かかったように思う, ソース上のコメント通りであるが,
2パターンに集約できることに気付いたので, 解答に到達できた.
※なお, WA版は, パターン① しか考慮出来てなかったことが原因と思われる.


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


■C++版プログラム(問題D/WA版, 1_08, 1_09, 1_10, 2_18, 2_19, 2_20 で, Wrong Answer).

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

■参照サイト
AtCoder Beginner Contest 043

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

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

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

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

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

5. Flask の バージョンは、Flask 1.0.2 である。

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

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

今回確認した内容は、現場で使える! PyTorch開発入門 深層学習モデルの作成とアプリケーションへの実装 (AI & TECHNOLOGY) の 7.2 Flaskを用いたWebAPI化 (P.175 – P.182) である。

※1. プログラムの詳細は, 書籍を参考(P.175 – P.182)にして下さい.

※2. Unix環境で無いため, 原書のような Gunicorn は使用せず, 代案となるが,
参照URL① にある HTTPクライアント(Advanced REST client)を使う形で, 動作確認を行った.
原書の確認方法から, かなり逸脱してしまったが, 学習済みモデルに, テスト画像を読み込ませて,
予測した情報をレスポンスさせる形で確認できたので, とりあえず良しとした.

※3. 下記, ソースのコメントにも記載したが, “loadするモデル” に注意が必要である,
具体的には, resnet18 以外のネットワークを使った学習モデルを保存(ここでは, taco_and_burrito_09.pth)した場合,
Missing key(s) in state_dict: に関する RuntimeError が生じる.
これを回避するため, resnet18 のネットワークを改変せず, そのまま taco画像, burrito画像を訓練したモデル
(ここでは, resnet18_19.pth)を保存し, このモデルを loadする形で, 動作確認を行った.

[モデル/load error]

[モデル/再保存]

[モデル/load ok]

※4. 下記, ソースのコメントにも記載したが, 最初, 変数 img の取得が出来なかったので, 参照URL② を参考に, Debug Mode(SET FLASK_ENV=development を指定する形)で, 動作確認を行った.

[KeyError: ‘img’]

[Advanced REST client/setting 1]

[Advanced REST client/setting 2]

■フォルダ構成.

■対象プログラム(原書を一部改変).

■実行結果.
1. 訓練データ(taco)
画像:taco_000.jpg
予測:taco
⇒ 正解

2. 訓練データ(burrito)
画像:burrito_000.jpg
予測:burrito
⇒ 正解

3. テストデータ(taco)
画像:taco_380.jpg
予測:taco
⇒ 正解

4. テストデータ(burrito)
画像:burrito_383.jpg
予測:taco
⇒ 不正解

5. テストデータ(burrito)
画像:burrito_374.jpg
予測:burrito
⇒ 正解


■参照サイト
【参照URL①】Advanced REST client
【参照URL②】Debug Mode.

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

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

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

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

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

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

5. Flask の バージョンは、Flask 1.0.2 である。

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

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

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

※1. プログラムの詳細は, 書籍を参考(P.174 – P.174)にして下さい.
※2. 今回は, PyTorch というよりは, 寧ろ Flask の 動作確認 となったように思う.

■Flaskの動作確認.


■参照サイト
【参照URL①】flask 1.0.2
【参照URL②】Flask 1.0.2
【参照URL③】Env. Variables not set while running Minimal Flask application

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

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

C++の練習を兼ねて, AtCoder Beginner Contest 047 の 問題B(すぬけ君の塗り絵 2 イージー / Snuke’s Coloring 2 (ABC Edit)) ~ 問題D(高橋君と見えざる手 / An Invisible Hand) を解いてみた.

■感想.
1. とりあえず, 解説見ずに解けたので良かったと思う.
2. 問題B は, 最初, 方針が全く見えなかったが, 数列 a の値を確認する度に, 黒く塗りつぶす x, y座標の最小値, 最大値が変化することに気付いたので, 解答に到達できた(※個人的には, 非常に面白い問題と感じた).
2. 問題D は, 数列A の 各要素の後方について, 最大値の抽出が必要があることに気付けた(※下記, ソースでは, 数列B として抽出している)ため, 解答に到達できた.


本家のサイトARC #063 / ABC #047 解説をご覧下さい.


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

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

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

■参照サイト
AtCoder Beginner Contest 047

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

C++の練習を兼ねて, AtCoder Beginner Contest 048 の 問題C(Boxes and Candies), 問題D(An Ordinary Game) を解いてみた.

■感想.
1. とりあえず, 解説見ずに解けたので良かったと思う.
2. 問題D は, 方針が見えなかったが, 文字列の両端に着目してみたところ, 規則性を抽出できたので, 解答に辿り着いた.
※解説みたら, だいたい同じ方針だったので, 着眼点については, 及第点に到達できたと思う.


本家のサイトABC 048 / ARC 064 解説をご覧下さい.


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

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

■参照サイト
AtCoder Beginner Contest 048

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

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) の 6.2 ニューラル行列因子分解 (P.160 – P.169) である。

※プログラムの詳細は, 書籍を参考(P.160 – P.169)にして下さい.

■ニューラル行列因子分解の訓練に関する動作確認(書籍から一部抜粋・追記).

■実行結果(epoch 5).

■指定ユーザの映画評価に関する予測についての動作確認(書籍から一部抜粋・追記).

■実行結果.

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


■参照サイト
【参照URL①】MovieLens
【参照URL②】SAVING AND LOADING MODELS

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

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

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) の 6.1 行列因子分解 (P.152 – P.159) である。

※1. プログラムの詳細は, 書籍を参考(P.152 – P.159)にして下さい.
※2. 書籍上は, 本章に関し, 特に, 訓練したモデルの保存については, 書かれてなかったが, epoch 5 でも, 約1974秒かかったので, 訓練したモデルの保存は, 個人的には, 推奨したい.

■行列因子分解の訓練に関する動作確認.

■実行結果(epoch 5).

■指定ユーザの映画評価に関する予測についての動作確認.

■実行結果.

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


■参照サイト
【参照URL①】MovieLens
【参照URL②】SAVING AND LOADING MODELS
【参照URL③】torch.topk

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

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

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) の 6.1 行列因子分解 (P.152 – P.156) である。

※1. プログラムの詳細は, 書籍を参考(P.152 – P.156)にして下さい.
※2. どちらかというと, torch.sum() の 使い方を確認した内容となっている.

■torch.sum()の動作確認.

■実行結果.


■参照サイト
【参照URL①】torch.sum()

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

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

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) の 5.5 Encoder-Decoderモデルによる機械翻訳 (P.135 – P.148) である。
※1. プログラムの詳細は, 書籍を参考(P.135 – P.148)にして下さい.
※2. 前回の続きで, 翻訳させる部分を確認した.
※3. ハマった箇所として, Decoderクラスで,
ValueError: First argument of _symbolic_pack_padded_sequence is expected to be a tensor, but got an object of type
といった error が出力されたが,
pad_packed_sequence と 書くべきところを, pack_padded_sequence とタイプミスしたことが原因と分かった.
※4. 以下のように, 実行完了までに, 22050秒程度かかったので, 実行される場合は, 就寝直前などが良いと思われる.

■機械翻訳の動作確認(書籍から一部抜粋・加筆).

■実行結果(一部抜粋).

■実行結果(epoch 30).


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