アルファ碁:SLポリシーネットワークのモデル部分
アルファ碁のSLポリシーネットワークモデル部分
アルファ碁では入力の特徴量が48、中間層5x5の192チャネル、出力層の全13層からなっている。
# Network definition class CNN(chainer.Chain): def __init__(self, train=True): super(CNN, self).__init__( conv1 = F.Convolution2D(48,192,5,pad=2), conv2 = F.Convolution2D(192,192,3,pad=1), conv3 = F.Convolution2D(192,192,3,pad=1), conv4 = F.Convolution2D(192,192,3,pad=1), conv5 = F.Convolution2D(192,192,3,pad=1), conv6 = F.Convolution2D(192,192,3,pad=1), conv7 = F.Convolution2D(192,192,3,pad=1), conv8 = F.Convolution2D(192,192,3,pad=1), conv9 = F.Convolution2D(192,192,3,pad=1), conv10 = F.Convolution2D(192,192,3,pad=1), conv11 = F.Convolution2D(192,192,3,pad=1), conv12 = F.Convolution2D(192,192,3,pad=1), conv13 = F.Convolution2D(192,1,1,nobias=True), bias14=L.Bias(shape=(361)) ) def __call__(self, x): h = F.relu(self.conv1(x)) h = F.relu(self.conv2(h)) h = F.relu(self.conv3(h)) h = F.relu(self.conv4(h)) h = F.relu(self.conv5(h)) h = F.relu(self.conv6(h)) h = F.relu(self.conv7(h)) h = F.relu(self.conv8(h)) h = F.relu(self.conv9(h)) h = F.relu(self.conv10(h)) h = F.relu(self.conv11(h)) h = F.relu(self.conv12(h)) h = self.conv13(h) h = F.reshape(h,(-1361)) h = self.bias14(h) return h