投稿

1月, 2023の投稿を表示しています

OpenMythosのサンプルプログラムを動かしました

1.概要 前回、OpenMythosの環境構築まで実現したので、GitHubにあるサンプルプログラム(Usage)を動かしてみました。一部エラーが発生しましたが、結果出力部分なので修正をしました。その内容を記述します。 2.詳細 Usageに記載されているPythonプログラムをopenmythos_usage.pyとして作成します。 $ source ~/mypy/bin/activate (mypy) $ pythoh3 openmythos_usage.py 下記エラーとなります [MLA] Parameters: 1,538,626 [MLA] Logits shape: torch.Size([2, 16, 1000]) [MLA] Generated shape: torch.Size([2, 24]) Traceback (most recent call last):   File "/home/nakasima/openmythos/openmythos_usage.py", line 48, in <module>     rho = torch.linalg.eigvals(A).abs().max().item()           ^^^^^^^^^^^^^^^^^^^^^^^ RuntimeError: linalg.eig: The input tensor A must have at least 2 dimensions. コードの下記部分を修正します #rho = torch.linalg.eigvals(A).abs().max().item() rho = A.abs().max().item() $ source ~/mypy/bin/activate (mypy) $ pythoh3 openmythos_usage.py [MLA] Parameters: 1,538,626 [MLA] Logits shape: torch.Size([2, 16, 1000]) [MLA] Generated shape: torch.Size([2, 24]) [MLA] Spectral radius ρ(A) = 0.3679 (mus...

3目並べを利用したAlphaGoの学習 tensorflow-2編 学習

1.概要 AlphaGoの勉強過程で3目並べを学んでいます。前回までTensorflow-1.15を利用しました。今回からTensorflow-2.9に実行環境を変更して、tensorflow-1.15と同じことを実行します。tensorflow-1.xとtensorflow-2.xの比較をするために、できるだけtensorflow-1.15の設定やコードを変更せずに、実行するために必要な最低限の変更に留めます。 2.詳細 (1) 概要 3目並べのフィールドを3☓3のイメージと考えて、手書き文字認識の手法を利用します。利用する環境はtensorflow-2.9環境です。入力データはminimax法で活用したすべての手順(9!=362880)の組み合わせの中から勝負が決まった時点の3目並べのフィールド情報と結果(勝ち、負け、引き分け)を利用します。 tensorflowで利用できる形式に変換し、学習をしてモデルを作成し、モデルを利用して3目並べの対戦をします。元情報がminimax法で解析した情報なので、tensorflowによる学習結果がminimax法まで到達できると最高の結果です。大まかな手順は以下の通りです。 (1) minimax法の解析を利用して学習用入力データを作成 (2) 作成した学習用入力データを利用して、tensorflowでモデル作成 (3) tensorflowのモデルを利用して実際に対戦 (1)の学習用入力データ作成部分に変わりはないので、(2)(3)を2回に分割して記述します。 (2) 詳細 (2) 作成した学習用入力データを利用して、tensorflowでモデル作成 dl2tensorflow.pyを作成します。動作環境はtensorflow-2.9の環境です。 学習用データは、tensorflow-1.15と同じものを利用します。r1_data.npy(フィールドデータ)、r2_data.npy(結果データ)で、件数は、255,168件です。結果を知っているので、100%のデータを利用して、トレーニングをしてモデルを作成、保存します。完成したモデルは、dl2model.h5で保存します。 tensorflow-1.15では、epochは100に設定していました。しかし、tensorflow-1.15のように収束しません。600回以上に設...

3目並べを利用したAlphaGoの学習 tensorflow-1編 対戦

1.概要 AlphaGoの勉強過程で3目並べを学んでいます。考え方の基礎を知る上で大切なことであると思いネット上の資料も参考にしています。まず、3目並べのルールを記述したClassを作成して、対戦ができることを実現しました。今回はDeepLearningを利用した3回目の手順説明です。 2.詳細 (1) 概要 3目並べのフィールドを3☓3のイメージと考えて、手書き文字認識の手法を利用します。利用する環境はtensorflow-1.15環境です。入力データはminimax法で活用したすべての手順(9!=362880)の組み合わせの中から勝負が決まった時点の3目並べのフィールド情報と結果(勝ち、負け、引き分け)を利用します。 tensorflowで利用できる形式に変換し、学習をしてモデルを作成し、モデルを利用して3目並べの対戦をします。元情報がminimax法で解析した情報なので、tensorflowによる学習結果がminimax法まで到達できると最高の結果です。大まかな手順は以下の通りです。 (1) minimax法の解析を利用して学習用入力データを作成 (2) 作成した学習用入力データを利用して、tensorflowでモデル作成 (3) tensorflowのモデルを利用して実際に対戦 上記手順を3回に分けて記述し、今回は3回目です。 (2) 詳細 (3) tensorflowのモデルを利用して実際に対戦 ttttensorflow.pyを作成します。動作環境はtensorflow-1.15環境です。この中で利用するtictactoe.pyはmontecarlo版を利用します。 トレーニングしたモデル(dlmodel.h5)をロードします。最初、モデルの結果だけを利用したのですが、minimax法と同様にリーチ目を認識できません。そこで、alphabeta法で利用したis_reach()も利用しています。感触的にはminimax法と同等程度の手を打つようです。 from tictactoe import Tictactoe import random import tensorflow as tf from tensorflow.keras.models import load_model import numpy as np def random_select(a...

3目並べを利用したAlphaGoの学習 tensorflow-1編 学習

1.概要 AlphaGoの勉強過程で3目並べを学んでいます。考え方の基礎を知る上で大切なことであると思いネット上の資料も参考にしています。まず、3目並べのルールを記述したClassを作成して、対戦ができることを実現しました。今回はDeepLearningを利用した2回目の手順説明です。 2.詳細 (1) 概要 3目並べのフィールドを3☓3のイメージと考えて、手書き文字認識の手法を利用します。利用する環境はtensorflow-1.15の環境です。入力データはminimax法で活用したすべての手順(9!=362880)の組み合わせの中から勝負が決まった時点の3目並べのフィールド情報と結果(勝ち、負け、引き分け)を利用します。 tensorflowで利用できる形式に変換し、学習をしてモデルを作成し、モデルを利用して3目並べの対戦をします。元情報がminimax法で解析した情報なので、tensorflowによる学習結果がminimax法まで到達できると最高の結果です。大まかな手順は以下の通りです。 (1) minimax法の解析を利用して学習用入力データを作成 (2) 作成した学習用入力データを利用して、tensorflowでモデル作成 (3) tensorflowのモデルを利用して実際に対戦 上記手順を3回に分けて記述し、今回は2回目です。 (2) 詳細 (2) 作成した学習用入力データを利用して、tensorflowでモデル作成 dltensorflow.pyを作成します。動作環境はtensorflow-1.15の環境です。 学習用データは、r1_data.npy(フィールドデータ)、r2_data.npy(結果データ)で、件数は、255,168件です。これを75%のトレーニングデータと25%のテストデータに分割して動作確認後、再度100%のデータを利用して、もう一度トレーニングをしてモデルを作成、保存します。 下記コードのコメント部分が最初のトレーニング部分です。現在は100%でトレーニングの状態になっています。 完成したモデルは、dlmodel.h5で保存します。 import tensorflow as tf from tensorflow.keras.layers import Activation, Dense, Dropout from tensorflo...

3目並べを利用したAlphaGoの学習 tensorflow-1編 データ作成

1.概要 AlphaGoの勉強過程で3目並べを学んでいます。前回までプログラムロジックを作成していましたが、今回から3目並べの全ての組合せデータを利用してAIでプログラミングに勝てるかを試します。DeepLearningとしてtensorflowの1.xと2.xの両方を試してみます。内容が多いので複数回に分割して記載をします。 2.詳細 (1) 概要 3目並べのフィールドを3☓3のイメージと考えて、手書き文字認識の手法を利用します。最初に利用する環境はtensorflow-1.15です。入力データはminimax法で活用したすべての手順(9!=362880)の組み合わせの中から勝負が決まった時点の3目並べのフィールド情報と結果(勝ち、負け、引き分け)を利用します。 tensorflowで利用できる形式に変換し、学習をしてモデルを作成し、モデルを利用して3目並べの対戦をします。元情報がminimax法で解析した情報なので、tensorflowによる学習結果がminimax法まで到達できると最高の結果です。大まかな手順は以下の通りです。 (1) minimax法の解析を利用して学習用入力データを作成 (2) 作成した学習用入力データを利用して、tensorflowでモデル作成 (3) tensorflowのモデルを利用して実際に対戦 上記手順を3回に分けて記述します。 (2) 詳細 (1) minimax法の解析を利用して学習用入力データを作成 dlmakedata.pyを作成します。この中で利用するtictactoe.pyはmontecarlo版を利用します。 titactoeのコードは本ブログのTictactoe like the montecarlo(2023/12/30参照) 学習用データは、dl1_data.npy(フィールドデータ)、dl2_data.npy(結果データ)です。 プログラムを実行した結果、学習用データの件数は、255,168件でした。 これは9!=362880よりも少なくなります。最低5手で勝負が決着する場合などがあるためです。 from tictactoe import Tictactoe import numpy as np def minimax_select(actions):     r1 = []   ...