- GCC or Clang
- Ninja
- CMake
- optional: CUDA
- The program has been tested on Linux and macOS.
# download mxnet
mkdir -p ~/build/lib/
cd ~/build/lib/
wget https://github.com/apache/incubator-mxnet/releases/download/1.6.0/apache-mxnet-src-1.6.0-incubating.tar.gz
tar -xzvf apache-mxnet-src-1.6.0-incubating.tar.gz
mv apache-mxnet-src-1.6.0-incubating mxnet
cd mxnet
# cmake
cp CMakeLists_MacOS.txt CMakeLists.txt
mkdir build && cd build
cmake .. \
-DCMAKE_BUILD_TYPE=Release \
-DUSE_OPENMP=0 \
-DUSE_CUDA=0 \
-DUSE_OPENCV=0 \
-DUSE_JEMALLOC=0 \
-DUSE_CPP_PACKAGE=1 \
-DUSE_BLAS=apple \
-DUSE_F16C=0 \
-GNinja
# cmake
cp CMakeLists_Linux.txt CMakeLists.txt
mkdir build && cd build
cmake .. \
-DCMAKE_BUILD_TYPE=Release \
-DUSE_OPENMP=1 \
-DUSE_CUDA=0 \
-DUSE_OPENCV=0 \
-DUSE_JEMALLOC=0 \
-DUSE_CPP_PACKAGE=1 \
-DUSE_F16C=0 \
-GNinja
# cmake
cp CMakeLists_Linux.txt CMakeLists.txt
mkdir build && cd build
cmake .. \
-DCMAKE_BUILD_TYPE=Release \
-DUSE_OPENMP=1 \
-DUSE_CUDA=1 \
-DUSE_CUDNN=1 \
-DUSE_OPENCV=0 \
-DUSE_JEMALLOC=0 \
-DUSE_CPP_PACKAGE=1 \
-DUSE_F16C=0 \
-GNinja
rm -rf lib && mkdir lib
cd build && ninja -v
cp ./libmxnet* ../lib
export DYLD_LIBRARY_PATH=/Users/`yourname`/build/lib/mxnet/lib
export LD_LIBRARY_PATH=/home/`yourname`/build/lib/mxnet/lib
git clone https://github.com/yenw/ShiroGo.git
cd ShiroGo
mkdir -p build && cd build && cmake .. && make
cp -r tool/cr* ./build
cd build
# edit cr_auto
# ...
# ...
./cr_nohup_out
./cr_watch
- Input
- 16 channel: history planes
- 8 step x 2 color
- 2 channel: color planes
- black
- white
- 2 channel: action planes
- first: for normal move
- second: for pass move
- 16 channel: history planes
- Shared Body
- Block
- ResNet V1
- ResNet V2
- ResNext
- ResNet used by CrazyZero
- DPN: Dual Path Networks
- MixNet
- SE_Block
- SE: squeeze & excitation
- SNSE: SparseNet: squeeze & excitation
- SA: Spatial Attention
- CBAM: Channel attention & Spatial Attention
- SAA: Spatial Attention & Add
- KT
- SE_Type:
- Type A:
- input2 = Conv3x3(input)
- input3 = Conv3x3(input2)
- output = SE(input3) + input
- Type B:
- input2 = Conv3x3(input)
- input3 = Conv3x3(input2)
- input4 = input3 + input
- output = SE(input4) + input4
- Type A:
- Activation
- relu
- elu
- gelu
- mish
- swish1
- leaky relu
- prelu
- rrelu
- selu
- Block
- Output
- Policy Head
- Normal Move Head
- Pass Head
- Board Value Head
- State Head
- action = none,
$state = s_t$ - action = a,
$state = s_{t+1} = P(s_t, a)$
- action = none,
- Policy Head
- Support:
- Shared Body Block: ResNetV2
- Shared Body SE: none, KT-Type A, KT-Type B
- Output: Policy, Board Value Head, State Head