mirror of
https://github.com/sockspls/badfish
synced 2025-04-30 16:53:09 +00:00
Added use_draw_in_training_data_generation option to write out draw games to the training data.
This commit is contained in:
parent
4c926b8eb4
commit
aa2dc962f5
2 changed files with 24 additions and 23 deletions
|
@ -165,8 +165,8 @@ typedef float LearnFloatType;
|
||||||
// 引き分けに至ったとき、それを教師局面として書き出す
|
// 引き分けに至ったとき、それを教師局面として書き出す
|
||||||
// これをするほうが良いかどうかは微妙。
|
// これをするほうが良いかどうかは微妙。
|
||||||
// #define LEARN_GENSFEN_USE_DRAW_RESULT
|
// #define LEARN_GENSFEN_USE_DRAW_RESULT
|
||||||
extern bool use_draw_in_training;
|
|
||||||
extern bool use_hash_in_training;
|
|
||||||
// ======================
|
// ======================
|
||||||
// configure
|
// configure
|
||||||
// ======================
|
// ======================
|
||||||
|
|
|
@ -84,10 +84,6 @@
|
||||||
#include <shared_mutex>
|
#include <shared_mutex>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
bool use_draw_in_training=false;
|
|
||||||
bool use_draw_in_validation=false;
|
|
||||||
bool use_hash_in_training=true;
|
|
||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
|
||||||
//// これは探索部で定義されているものとする。
|
//// これは探索部で定義されているものとする。
|
||||||
|
@ -115,6 +111,11 @@ namespace Learner
|
||||||
// 局面の配列 : PSVector は packed sfen vector の略。
|
// 局面の配列 : PSVector は packed sfen vector の略。
|
||||||
typedef std::vector<PackedSfenValue> PSVector;
|
typedef std::vector<PackedSfenValue> PSVector;
|
||||||
|
|
||||||
|
bool use_draw_in_training_data_generation = false;
|
||||||
|
bool use_draw_in_training = false;
|
||||||
|
bool use_draw_in_validation = false;
|
||||||
|
bool use_hash_in_training = true;
|
||||||
|
|
||||||
// -----------------------------------
|
// -----------------------------------
|
||||||
// 局面のファイルへの書き出し
|
// 局面のファイルへの書き出し
|
||||||
// -----------------------------------
|
// -----------------------------------
|
||||||
|
@ -499,19 +500,19 @@ void MultiThinkGenSfen::thread_worker(size_t thread_id)
|
||||||
// 長手数に達したのか
|
// 長手数に達したのか
|
||||||
if (ply >= MAX_PLY2)
|
if (ply >= MAX_PLY2)
|
||||||
{
|
{
|
||||||
#if defined (LEARN_GENSFEN_USE_DRAW_RESULT)
|
if (use_draw_in_training_data_generation) {
|
||||||
// 勝敗 = 引き分けとして書き出す。
|
// 勝敗 = 引き分けとして書き出す。
|
||||||
// こうしたほうが自分が入玉したときに、相手の入玉を許しにくい(かも)
|
// こうしたほうが自分が入玉したときに、相手の入玉を許しにくい(かも)
|
||||||
flush_psv(0);
|
flush_psv(0);
|
||||||
#endif
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pos.is_draw(ply)) {
|
if (pos.is_draw(ply)) {
|
||||||
#if defined (LEARN_GENSFEN_USE_DRAW_RESULT)
|
if (use_draw_in_training_data_generation) {
|
||||||
|
// Write if draw.
|
||||||
flush_psv(0);
|
flush_psv(0);
|
||||||
#endif
|
}
|
||||||
// Do not write if draw.
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -522,10 +523,9 @@ void MultiThinkGenSfen::thread_worker(size_t thread_id)
|
||||||
// Write the positions other than this position if checkmated.
|
// Write the positions other than this position if checkmated.
|
||||||
if (pos.checkers()) // Mate
|
if (pos.checkers()) // Mate
|
||||||
flush_psv(-1);
|
flush_psv(-1);
|
||||||
#if defined (LEARN_GENSFEN_USE_DRAW_RESULT)
|
else if (use_draw_in_training_data_generation) {
|
||||||
else // Stalemate
|
flush_psv(0); // Stalemate
|
||||||
flush_psv(0);
|
}
|
||||||
#endif
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -588,10 +588,10 @@ void MultiThinkGenSfen::thread_worker(size_t thread_id)
|
||||||
// 各千日手に応じた処理。
|
// 各千日手に応じた処理。
|
||||||
|
|
||||||
if (pos.is_draw(0)) {
|
if (pos.is_draw(0)) {
|
||||||
#if defined (LEARN_GENSFEN_USE_DRAW_RESULT)
|
if (use_draw_in_training_data_generation) {
|
||||||
// 引き分けを書き出すとき
|
// Write if draw.
|
||||||
flush_psv(0);
|
flush_psv(0);
|
||||||
#endif
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2660,6 +2660,7 @@ void learn(Position&, istringstream& is)
|
||||||
else if (option == "eta3") is >> eta3;
|
else if (option == "eta3") is >> eta3;
|
||||||
else if (option == "eta1_epoch") is >> eta1_epoch;
|
else if (option == "eta1_epoch") is >> eta1_epoch;
|
||||||
else if (option == "eta2_epoch") is >> eta2_epoch;
|
else if (option == "eta2_epoch") is >> eta2_epoch;
|
||||||
|
else if (option == "use_draw_in_training_data_generation") is >> use_draw_in_training_data_generation;
|
||||||
else if (option == "use_draw_in_training") is >> use_draw_in_training;
|
else if (option == "use_draw_in_training") is >> use_draw_in_training;
|
||||||
else if (option == "use_draw_in_validation") is >> use_draw_in_validation;
|
else if (option == "use_draw_in_validation") is >> use_draw_in_validation;
|
||||||
else if (option == "use_hash_in_training") is >> use_hash_in_training;
|
else if (option == "use_hash_in_training") is >> use_hash_in_training;
|
||||||
|
|
Loading…
Add table
Reference in a new issue