mirror of
https://github.com/sockspls/badfish
synced 2025-05-01 09:13:08 +00:00
42 lines
No EOL
1.2 KiB
C++
42 lines
No EOL
1.2 KiB
C++
// NNUE評価関数で用いる入力特徴量とネットワーク構造の定義
|
|
|
|
#ifndef HALFKP_CR_EP_256X2_32_32_H
|
|
#define HALFKP_CR_EP_256X2_32_32_H
|
|
|
|
#include "../features/feature_set.h"
|
|
#include "../features/half_kp.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 {
|
|
|
|
// 評価関数で用いる入力特徴量
|
|
using RawFeatures = Features::FeatureSet<
|
|
Features::HalfKP<Features::Side::kFriend>, Features::CastlingRight,
|
|
Features::EnPassant>;
|
|
|
|
// 変換後の入力特徴量の次元数
|
|
constexpr IndexType kTransformedFeatureDimensions = 256;
|
|
|
|
namespace Layers {
|
|
|
|
// ネットワーク構造の定義
|
|
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
|
|
#endif // HALFKP_CR_EP_256X2_32_32_H
|