0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

DJProject_備忘録_8

Last updated at Posted at 2025-01-15

2025-01-14

(続き)

あとやることは…

・ballスケジュール「make_x」を仮定
・InitAiTypesPlayerの実装(🔺)
・InitAiTypesPlayerをmake_xに追加
・ChangeAiModePlayerの実装(✅)
・ChangeAiModePlayerをmake_xに追加…しない(トグルスイッチでかつデフォルトがTrainの為)(✅)
・ChangeTravelModePlayerの実装(✅)
・ChangeTravelModePlayerをmake_xに追加しない(トグルスイッチでかつデフォルトがForwardの為)(✅)
・AiSettingsPlayerの実装
・AiSettingsPlayerを見ながら、TokenizerPlayerを作る。
・AiSettingsPlayerをmake_xに追加
・EmbeddingPlayerの実装
・EmbeddingPlayerをmake_xに追加

実装中のつぶやき

2025-01-18

やること

あとやることは…

・ballスケジュール「make_x」を仮定
・InitAiTypesPlayerの実装(🔺)
・InitAiTypesPlayerをmake_xに追加
・ChangeAiModePlayerの実装(✅)
・ChangeAiModePlayerをmake_xに追加…しない(トグルスイッチでかつデフォルトがTrainの為)(✅)
・ChangeTravelModePlayerの実装(✅)
・ChangeTravelModePlayerをmake_xに追加しない(トグルスイッチでかつデフォルトがForwardの為)(✅)
・AiSettingsPlayerの実装(✅)
・AiSettingsPlayerを見ながら、TokenizerPlayerを作る。(✅)
・AiSettingsPlayerをmake_xに追加(✅)
・EmbeddingPlayerの実装(✅)
・EmbeddingPlayerをmake_xに追加(✅)
・BallOfjectの、ScheduleOfScheduleに、「モードの分岐処理は、各々プレイヤー自体に実装してください。」と、冒頭に記入しておく。(✅)
・スケジュールモードのスケジュール(モード分岐)の実装(✅)
・そして、上記のスケジュール実装中で必要と認識し、仮定したプレイヤーの実装
・スケジュールの実装


…ちょっと待って、、、ScheduleOfScheduleでスケジュールモードを切り替えるより、スケジュールモードを切り替えるプレイヤーを作った方が良くない、、!?

わかった、ScheduleOfScheduleは
「このモードが終了した後に、このモードを実行する」
という概念のみにしよう。つまり、forやmodeのif分岐は、全てプレイヤーの方で実装すれば、ScheduleOfScheduleはものすごくスッキリしたものになる!!!(上記のやることリストをそのように改変済み)

2025-01-23

あとやることは、、

・BallOfjectの、ScheduleOfScheduleに、「モードの分岐処理は、各々プレイヤー自体に実装してください。」と、冒頭に記入しておく。(✅)
・スケジュールモードのスケジュール(モード分岐)の実装(✅)
・そして、上記のスケジュール実装中で必要と認識し、仮定したプレイヤーの実装
・スケジュールの実装


モード切り替えのペア実装が完了した。↓


// 最初はロードから。
if ("FirstMode" == this.ScheduleMode)
{
    this.ScheduleMode = "ParamsLoadMode";
}
// Aiの推論設定
else if ("ParamsLoadMode" == this.ScheduleMode)
{
    this.ScheduleMode = "SettingsOfPredictMode";
}
// 入力データのベクトル化
else if ("SettingsOfPredictMode" == this.ScheduleMode)
{
    this.ScheduleMode = "ToVecOfXOfPredictMode";
}
// 推論を開始する
else if ("ToVecOfXOfPredictMode" == this.ScheduleMode)
{
    this.ScheduleMode = "OnePositionLoopOfPredictMode"; // eosトークンで抜ける
}
// 大臣と情報交換する(推論結果とサンプルデータのやり取り)
else if ("OnePositionLoopOfPredictMode" == this.ScheduleMode)
{
    this.ScheduleMode = "SNSWithDaijinMode"; // eosトークンで抜ける
}
// Aiの設定(訓練としての設定)
else if ("SNSWithDaijinMode" == this.ScheduleMode)
{
    this.ScheduleMode = "SettingsOfTrainMode";
}
// 入力データとラベルデータの、ベクトル化
else if ("SettingsOfTrainMode" == this.ScheduleMode)
{
    this.ScheduleMode = "ToVecOfXandTMode";
}
// 学習開始
else if ("ToVecOfXandTMode" == this.ScheduleMode)
{
    this.ScheduleMode = "OnePositionLoopOfTrainMode";
}
// パラメータのセーブ(セーブするしないの判断処理を含む)
else if ("OnePositionLoopOfTrainMode" == this.ScheduleMode)
{
    this.ScheduleMode = "ParamsSendToHomePCMode";
}
// 推論設定に戻る(ループする) ループだけどこっちが正規ルートの為実装。
else if ("ParamsSendToHomePCMode" == this.ScheduleMode)
{
    this.ScheduleMode = "SettingsOfPredictMode";
}

(ヤバっ、私の神的デザインパターンがバレるぅ💕)

未実装のモードの実装へ。

未実装のモード群

(実装次第チェック)

FirstMode(✅)
ParamsLoadMode()
SettingsOfPredictMode
ToVecOfXOfPredictMode
OnePositionLoopOfPredictMode
SNSWithDaijinMode
SettingsOfTrainMode
ToVecOfXandTMode
OnePositionLoopOfTrainMode
ParamsSendToHomePCMode

2025-01-23

やることリスト

FirstMode(✅)
ParamsLoadMode
→ これは内部で(
class BitEncoderDecoderPlayer(仮)
    def FlattenAndEncodeToBits
    def UnpackFromBitArray
)の実装が必要()
SettingsOfPredictMode
ToVecOfXOfPredictMode
OnePositionLoopOfPredictMode
SNSWithDaijinMode
SettingsOfTrainMode
ToVecOfXandTMode
OnePositionLoopOfTrainMode
ParamsSendToHomePCMode

スケジュールの実装()


InstallFromParams2DcodePlayer
は、

  • エンコード(1行25bitの行列でデータを作る)プレイヤーを実行
  • AiSettingsPlayerに渡す
    の2つだけかな?

→でも、エンコード、デコードはプレイヤーでまとめたいよ…

2025-01-25~

試行錯誤中(https://chatgpt.com/g/g-kuufVcS5H-miraitoriko/c/67939986-7220-8012-b7d0-a4ca3710fff0)
・モードのスケジュールが完了
・仮定義したスケジュールの実装
・仮定義したプレイヤーの実装
・_BitEncoderDecoderPlayerの実装中

チェックリスト

[✅] FirstMode
[✅] ParamsLoadMode
[✅]_BitEncoderDecoderPlayer
 [✅]FlattenAndEncodeToBits メソッド
 [✅]UnpackFromBitArray メソッド
 ▷(https://chatgpt.com/g/g-kuufVcS5H-miraitoriko/c/6797df6c-8aac-8012-abea-3abf2bef8dfe)
 ▷ BitEncoderDecoderPlayerは、全てのパラメータを、ひとつの1次元ジャグにまとめて出力するメソッド、またその1次元ジャグをデコードロードするメソッドを持たせました。
 なので、2Dcodeデータ ⇔ モデルParams のやり取りができるプレイヤーです。
[✅]OptimizerPlayerの実装
[🔺]作られたParamsのBit配列を、2Dcodeの限界容量毎にスプリットした2次元リストの作成(エンコード)するメソッド、それをデコードするメソッドを持った、新しいBitArraySplitterPlayerの実装
 ▷ 2Dコードの限界容量を取ってこよう(⚠️手間と判断。デバッグ時に実装する。)
[✅] // 二次元Bit配列からひとつ取り出すPlayerの実装
[] t_QRCodeErrorCorrectionAndMaskPlayerDir は多分使ってないですね、、。明確に使っていないことを確認する
[✅] // 二次元Bit配列にデータが無くなり次第(先頭のデータがnullになり次第)、次のモードを設定するPlayer の、実装(プレイヤーじゃないかも。)
[✅] // 二次元ジャグ化したら、各行の先頭にインデックスを加える(paddingSize=3 #100<1000枚程のテクスチャ使うから。) の実装
[✅]そのプレイヤーでエンコードされたデータを、forで回して沢山の2Dcodeを生産する形に、Modeを作り直し。
[✅] 二次元ジャグ化したら、各行の先頭にindexを追加する機能をどうにか入れる(BitArraySplitterPlayerに機能を追加する形にしよう。)
[✅] ParamsToBitDataModeのプレイヤー群のMainの再確認
[🔺]学習結果を今回保存するしないの判断をプレイヤーでやり、モード分岐をする。(保存するしないの条件だけ未実装)(ParamsSaveFlagControllingPlayerとして実装中…)
[]プレイヤー同士のクラス変数の渡し合いの実装
(
ParamsToBitDataMode
BitDataTo2DcodeMode
)
[] ParamsToBitDataMode は、一次元ジャグ化するためのモード、とスケジュールにはメモされているけれど、本当に?確かめる。ParamsToBitDataModeで実行されている内容は…(
InitFromQrcodePlayer(AllParamsを一次元ジャグ化)(✅)
ParamsSaveFlagControllingPlayer(全開セーブ時刻から時間経過した時 かつ左大臣がワールドに存在した時に🚩を立てる)(🔺)
QRCodeModePlayer(モードを数字に変えるだけ)(✅)
QRCodeCharacterCountPlayer(CalculateBitCount() が
"0010" (英数字モード) → 9ビット、、
などの初期化設定。具体的にモードごとのビット数を決定して、指定された長さでゼロ埋めしたビット列を生成。最終的には、
モード指示子と文字数ビット列を結合して、最終的なビット出力を 
outputBits に格納。設定と最初のbitの用意だけなので、問題は無し)(✅)
QRCodeBitConversionPlayer(データをbitに変換するプレイヤー)(✅)
BitArraySplitterPlayer (QRの最大容量ごとにスプリットし、二次元ジャグ化しているプレイヤー)(✅)
)
[✅] Alphanumericモードは、
「
0 1 2 3 4 5 6 7 8 9  
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z  
スペース $ % * + - . / :  
」
しか変換ができないのだそう。なので、BitEncoderDecoderPlayer内では、アライメントをすべて「スペース $ % * / :  」のどれかにする様な改良が必要。修正した。README.mdにも「tokenizerにはalphabet飲みを使用してください」と記した。
[✅]あれ?AllParamsは二次元ジャグ。QRにするための一次元ジャグ化はどこ?(BitEncoderDecoderPlayerだ。でもこのプレイヤーはスケジュール内には存在させずに、ライブラリとして利用した気がする…使用している箇所を突き止める▷使っていなかった。BitEncoderDecoderPlayerをどうにか実装する。)(エンコードメソッドをInitFromQrcodePlayerResetのメインメソッドに実装した。)
[✅]思い返すと、重みやバイアスのなにか保存する時、文字列とfloat混ぜた気がするから、確認と修正(encode時にはstr化、Decode時には元に戻していたから問題なし)
[]SettingsOfPredictMode
[]ToVecOfXOfPredictMode
[]OnePositionLoopOfPredictMode
[]SNSWithDaijinMode
[]SettingsOfTrainMode
[]ToVecOfXandTMode
[]OnePositionLoopOfTrainMode
[]ParamsSendToHomePCMode
[]プレイヤー同士のクラス変数の渡し合いの実装
[] ParamsToBitDataMode → BitDataTo2DcodeMode は完了したので、モードスケジュールの通りに、実装を開始する
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?