mirror of
https://github.com/HChaZZY/Stockfish.git
synced 2025-12-24 19:16:49 +08:00
Added enpassant feature. Added k-p-cr-ep_256x2-32-32 architecture.
This commit is contained in:
@@ -47,6 +47,7 @@ OBJS = benchmark.o bitbase.o bitboard.o endgame.o evaluate.o main.o \
|
||||
eval/nnue/features/k.o \
|
||||
eval/nnue/features/p.o \
|
||||
eval/nnue/features/castling_right.o \
|
||||
eval/nnue/features/enpassant.o \
|
||||
eval/nnue/nnue_test_command.o \
|
||||
extra/sfen_packer.o \
|
||||
learn/gensfen2019.o \
|
||||
|
||||
38
src/eval/nnue/architectures/k-p-cr-ep_256x2-32-32.h
Normal file
38
src/eval/nnue/architectures/k-p-cr-ep_256x2-32-32.h
Normal file
@@ -0,0 +1,38 @@
|
||||
// NNUE<55>]<5D><><EFBFBD><EFBFBD><D690>ŗp<C597><70><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͓<EFBFBD><CD93><EFBFBD><EFBFBD>ʂƃl<C683>b<EFBFBD>g<EFBFBD><67><EFBFBD>[<5B>N<EFBFBD>\<5C><><EFBFBD>̒<EFBFBD><CC92>`
|
||||
|
||||
#include "../features/feature_set.h"
|
||||
#include "../features/k.h"
|
||||
#include "../features/p.h"
|
||||
#include "../features/castling_right.h"
|
||||
#include "../features/enpassant.h"
|
||||
|
||||
#include "../layers/input_slice.h"
|
||||
#include "../layers/affine_transform.h"
|
||||
#include "../layers/clipped_relu.h"
|
||||
|
||||
namespace Eval {
|
||||
|
||||
namespace NNUE {
|
||||
|
||||
// <20>]<5D><><EFBFBD><EFBFBD><D690>ŗp<C597><70><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͓<EFBFBD><CD93><EFBFBD><EFBFBD><EFBFBD>
|
||||
using RawFeatures = Features::FeatureSet<Features::K, Features::P,
|
||||
Features::CastlingRight, Features::EnPassant>;
|
||||
|
||||
// <20>ϊ<EFBFBD><CF8A><EFBFBD><EFBFBD>̓<EFBFBD><CC93>͓<EFBFBD><CD93><EFBFBD><EFBFBD>ʂ̎<CA82><CC8E><EFBFBD><EFBFBD><EFBFBD>
|
||||
constexpr IndexType kTransformedFeatureDimensions = 256;
|
||||
|
||||
namespace Layers {
|
||||
|
||||
// <20>l<EFBFBD>b<EFBFBD>g<EFBFBD><67><EFBFBD>[<5B>N<EFBFBD>\<5C><><EFBFBD>̒<EFBFBD><CC92>`
|
||||
using InputLayer = InputSlice<kTransformedFeatureDimensions * 2>;
|
||||
using HiddenLayer1 = ClippedReLU<AffineTransform<InputLayer, 32>>;
|
||||
using HiddenLayer2 = ClippedReLU<AffineTransform<HiddenLayer1, 32>>;
|
||||
using OutputLayer = AffineTransform<HiddenLayer2, 1>;
|
||||
|
||||
} // namespace Layers
|
||||
|
||||
using Network = Layers::OutputLayer;
|
||||
|
||||
} // namespace NNUE
|
||||
|
||||
} // namespace Eval
|
||||
47
src/eval/nnue/features/enpassant.cpp
Normal file
47
src/eval/nnue/features/enpassant.cpp
Normal file
@@ -0,0 +1,47 @@
|
||||
// NNUE<55>]<5D><><EFBFBD><EFBFBD><D690>̓<EFBFBD><CC93>͓<EFBFBD><CD93><EFBFBD><EFBFBD><EFBFBD>K<EFBFBD>̒<EFBFBD><CC92>`
|
||||
|
||||
#if defined(EVAL_NNUE)
|
||||
|
||||
#include "enpassant.h"
|
||||
#include "index_list.h"
|
||||
|
||||
namespace Eval {
|
||||
|
||||
namespace NNUE {
|
||||
|
||||
namespace Features {
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD>ʂ̂<CA82><CC82><EFBFBD><EFBFBD>A<EFBFBD>l<EFBFBD><6C>1<EFBFBD>ł<EFBFBD><C582><EFBFBD><EFBFBD>C<EFBFBD><43><EFBFBD>f<EFBFBD>b<EFBFBD>N<EFBFBD>X<EFBFBD>̃<EFBFBD><CC83>X<EFBFBD>g<EFBFBD><67><EFBFBD>擾<EFBFBD><E693BE><EFBFBD><EFBFBD>
|
||||
void EnPassant::AppendActiveIndices(
|
||||
const Position& pos, Color perspective, IndexList* active) {
|
||||
// <20>R<EFBFBD><52><EFBFBD>p<EFBFBD>C<EFBFBD><43><EFBFBD>̌x<CC8C><78><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>邽<EFBFBD>߁A<DF81>z<EFBFBD><7A><EFBFBD>T<EFBFBD>C<EFBFBD>Y<EFBFBD><59><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ꍇ<EFBFBD>͉<EFBFBD><CD89><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȃ<EFBFBD>
|
||||
if (RawFeatures::kMaxActiveDimensions < kMaxActiveDimensions) return;
|
||||
|
||||
auto epSquare = pos.state()->epSquare;
|
||||
if (epSquare == SQ_NONE) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (perspective == BLACK) {
|
||||
epSquare = Inv(epSquare);
|
||||
}
|
||||
|
||||
auto file = file_of(epSquare);
|
||||
active->push_back(file);
|
||||
}
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD>ʂ̂<CA82><CC82><EFBFBD><EFBFBD>A<EFBFBD><41><EFBFBD><EFBFBD><EFBFBD>O<EFBFBD><4F><EFBFBD><EFBFBD><EFBFBD>l<EFBFBD><6C><EFBFBD>ω<EFBFBD><CF89><EFBFBD><EFBFBD><EFBFBD><EFBFBD>C<EFBFBD><43><EFBFBD>f<EFBFBD>b<EFBFBD>N<EFBFBD>X<EFBFBD>̃<EFBFBD><CC83>X<EFBFBD>g<EFBFBD><67><EFBFBD>擾<EFBFBD><E693BE><EFBFBD><EFBFBD>
|
||||
void EnPassant::AppendChangedIndices(
|
||||
const Position& pos, Color perspective,
|
||||
IndexList* removed, IndexList* added) {
|
||||
// Not implemented.
|
||||
assert(false);
|
||||
}
|
||||
|
||||
} // namespace Features
|
||||
|
||||
} // namespace NNUE
|
||||
|
||||
} // namespace Eval
|
||||
|
||||
#endif // defined(EVAL_NNUE)
|
||||
48
src/eval/nnue/features/enpassant.h
Normal file
48
src/eval/nnue/features/enpassant.h
Normal file
@@ -0,0 +1,48 @@
|
||||
// NNUE<55>]<5D><><EFBFBD><EFBFBD><D690>̓<EFBFBD><CC93>͓<EFBFBD><CD93><EFBFBD><EFBFBD><EFBFBD>K<EFBFBD>̒<EFBFBD><CC92>`
|
||||
|
||||
#ifndef _NNUE_FEATURES_ENPASSANT_H_
|
||||
#define _NNUE_FEATURES_ENPASSANT_H_
|
||||
|
||||
#if defined(EVAL_NNUE)
|
||||
|
||||
#include "../../../evaluate.h"
|
||||
#include "features_common.h"
|
||||
|
||||
namespace Eval {
|
||||
|
||||
namespace NNUE {
|
||||
|
||||
namespace Features {
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>K<EFBFBD>F<EFBFBD>ʂ̈ʒu
|
||||
class EnPassant {
|
||||
public:
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD>ʖ<EFBFBD>
|
||||
static constexpr const char* kName = "EnPassant";
|
||||
// <20>]<5D><><EFBFBD><EFBFBD><D690>t<EFBFBD>@<40>C<EFBFBD><43><EFBFBD>ɖ<EFBFBD><C996>ߍ<EFBFBD><DF8D>ރn<DE83>b<EFBFBD>V<EFBFBD><56><EFBFBD>l
|
||||
static constexpr std::uint32_t kHashValue = 0x02924F91u;
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD>ʂ̎<CA82><CC8E><EFBFBD><EFBFBD><EFBFBD>
|
||||
static constexpr IndexType kDimensions = 8;
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD>ʂ̂<CA82><CC82><EFBFBD><EFBFBD>A<EFBFBD><41><EFBFBD><EFBFBD><EFBFBD>ɒl<C992><6C>1<EFBFBD>ƂȂ<C682><C882>C<EFBFBD><43><EFBFBD>f<EFBFBD>b<EFBFBD>N<EFBFBD>X<EFBFBD>̐<EFBFBD><CC90>̍ő<CC8D><C591>l
|
||||
static constexpr IndexType kMaxActiveDimensions = 1;
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD>v<EFBFBD>Z<EFBFBD>̑<EFBFBD><CC91><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɑS<C991>v<EFBFBD>Z<EFBFBD><5A><EFBFBD>s<EFBFBD><73><EFBFBD>^<5E>C<EFBFBD>~<7E><><EFBFBD>O
|
||||
static constexpr TriggerEvent kRefreshTrigger = TriggerEvent::kAnyPieceMoved;
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD>ʂ̂<CA82><CC82><EFBFBD><EFBFBD>A<EFBFBD>l<EFBFBD><6C>1<EFBFBD>ł<EFBFBD><C582><EFBFBD><EFBFBD>C<EFBFBD><43><EFBFBD>f<EFBFBD>b<EFBFBD>N<EFBFBD>X<EFBFBD>̃<EFBFBD><CC83>X<EFBFBD>g<EFBFBD><67><EFBFBD>擾<EFBFBD><E693BE><EFBFBD><EFBFBD>
|
||||
static void AppendActiveIndices(const Position& pos, Color perspective,
|
||||
IndexList* active);
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD>ʂ̂<CA82><CC82><EFBFBD><EFBFBD>A<EFBFBD><41><EFBFBD><EFBFBD><EFBFBD>O<EFBFBD><4F><EFBFBD><EFBFBD><EFBFBD>l<EFBFBD><6C><EFBFBD>ω<EFBFBD><CF89><EFBFBD><EFBFBD><EFBFBD><EFBFBD>C<EFBFBD><43><EFBFBD>f<EFBFBD>b<EFBFBD>N<EFBFBD>X<EFBFBD>̃<EFBFBD><CC83>X<EFBFBD>g<EFBFBD><67><EFBFBD>擾<EFBFBD><E693BE><EFBFBD><EFBFBD>
|
||||
static void AppendChangedIndices(const Position& pos, Color perspective,
|
||||
IndexList* removed, IndexList* added);
|
||||
};
|
||||
|
||||
} // namespace Features
|
||||
|
||||
} // namespace NNUE
|
||||
|
||||
} // namespace Eval
|
||||
|
||||
#endif // defined(EVAL_NNUE)
|
||||
|
||||
#endif
|
||||
@@ -7,7 +7,8 @@
|
||||
|
||||
// 入力特徴量とネットワーク構造が定義されたヘッダをincludeする
|
||||
//#include "architectures/k-p_256x2-32-32.h"
|
||||
#include "architectures/k-p-cr_256x2-32-32.h"
|
||||
//#include "architectures/k-p-cr_256x2-32-32.h"
|
||||
#include "architectures/k-p-cr-ep_256x2-32-32.h"
|
||||
//#include "architectures/halfkp_256x2-32-32.h"
|
||||
|
||||
namespace Eval {
|
||||
|
||||
Reference in New Issue
Block a user