策略部分就是哪个下载的权重的网络,根据棋面黑白子状态,输出一些下子位置和(在该位的)胜率。
网络输入:
Leela Zero网络权重输入是:
```
1)在时间T = 0时行棋的一方
2)在时间T = -1时行棋的一方(如果T = 0则为0)
...
8)在时间T = -7时行棋的一方(如果T <= 6则为0)
9)时间T = 0时的另一方
10)时间T = -1时的另一方(如果T = 0则为0)
...
16)T = -7时的另一方(如果T <= 6则为0)
17)如果要移动黑棋则全部为1,否则为0
18)如果要移动白棋则全部为1,否则为0
```
形成18个19 x 19平面。
由黑方和白方下子序号--->生成18通道输入数据:
void 生成18通道输入数据(vector<int> &顺序黑,
vector<int> &顺序白,卷积层 &out)
{
float *d=out.data;
int wh=out.width*out.height;
bool b=false;//黑,白移动方
if(顺序白.size()==顺序黑.size())
{
//黑下
b=true;
}
int num=0;//步数
int endn;//终止点
if(b)
endn= 顺序黑.size();//终止点
else
endn= 顺序白.size();//终止点
//移动方8步
while(endn>0)
{
if(b)
for (int i = 0; i <endn; i++)
{
d[顺序黑[i]]=1.0f;
}
else
for (int i = 0; i <endn; i++)
{
d[顺序白[i]]=1.0f;
}
endn--;
num++;
d+=wh;
if(num==8)
break;
}
while(n