Exactly the one from the cited paper:
The best network had one convolutional layer with 64 7x7
filters, two convolutional layers with 64 5x5 filters, two lay-
ers with 48 5x5 filters, two layers with 32 5x5 filters, and
one fully connected layer.
I use caffe and the definition of the training network is:
name: "LogReg"
layers {
name: "mnist"
type: DATA
top: "data_orig"
top: "label"
data_param {
source: "train_result_leveldb/"
batch_size: 256
}
include: { phase: TRAIN }
}
layers {
name: "mnist"
type: DATA
top: "data_orig"
top: "label"
data_param {
source: "test_result_leveldb/"
batch_size: 256
}
include: { phase: TEST }
}
layers {
name: "slice"
type: SLICE
bottom: "data_orig"
top: "data"
top: "data_territory"
slice_param {
slice_dim: 1
slice_point : 2
}
}
#this part should be the same in learning and prediction network
layers {
name: "conv1_7x7_64"
type: CONVOLUTION
blobs_lr: 1.
blobs_lr: 2.
bottom: "data"
top: "conv2"
convolution_param {
num_output: 64
kernel_size: 7
pad: 3
weight_filler {
type: "xavier"
}
bias_filler {
type: "constant"
}
}
}
layers {
name: "relu2"
type: TANH
bottom: "conv2"
top: "conv2u"
}
layers {
name: "conv2_5x5_64"
type: CONVOLUTION
blobs_lr: 1.
blobs_lr: 2.
bottom: "conv2u"
top: "conv3"
convolution_param {
num_output: 64
kernel_size: 5
pad: 2
weight_filler {
type: "xavier"
}
bias_filler {
type: "constant"
}
}
}
layers {
name: "relu3"
type: TANH
bottom: "conv3"
top: "conv3u"
}
layers {
name: "conv3_5x5_64"
type: CONVOLUTION
blobs_lr: 1.
blobs_lr: 2.
bottom: "conv3u"
top: "conv4"
convolution_param {
num_output: 64
kernel_size: 5
pad: 2
weight_filler {
type: "xavier"
}
bias_filler {
type: "constant"
}
}
}
layers {
name: "relu4"
type: TANH
bottom: "conv4"
top: "conv4u"
}
layers {
name: "conv4_5x5_48"
type: CONVOLUTION
blobs_lr: 1.
blobs_lr: 2.
bottom: "conv4u"
top: "conv5"
convolution_param {
num_output: 48
kernel_size: 5
pad: 2
weight_filler {
type: "xavier"
}
bias_filler {
type: "constant"
}
}
}
layers {
name: "relu5"
type: TANH
bottom: "conv5"
top: "conv5u"
}
layers {
name: "conv5_5x5_48"
type: CONVOLUTION
blobs_lr: 1.
blobs_lr: 2.
bottom: "conv5u"
top: "conv6"
convolution_param {
num_output: 48
kernel_size: 5
pad: 2
weight_filler {
type: "xavier"
}
bias_filler {
type: "constant"
}
}
}
layers {
name: "relu6"
type: TANH
bottom: "conv6"
top: "conv6u"
}
layers {
name: "conv6_5x5_32"
type: CONVOLUTION
blobs_lr: 1.
blobs_lr: 2.
bottom: "conv6u"
top: "conv7"
convolution_param {
num_output: 32
kernel_size: 5
pad: 2
weight_filler {
type: "xavier"
}
bias_filler {
type: "constant"
}
}
}
layers {
name: "relu7"
type: TANH
bottom: "conv7"
top: "conv7u"
}
layers {
name: "conv7_5x5_32"
type: CONVOLUTION
blobs_lr: 1.
blobs_lr: 2.
bottom: "conv7u"
top: "conv8"
convolution_param {
num_output: 32
kernel_size: 5
pad: 2
weight_filler {
type: "xavier"
}
bias_filler {
type: "constant"
}
}
}
layers {
name: "relu8"
type: TANH
bottom: "conv8"
top: "conv8u"
}
layers {
name: "flat"
type: FLATTEN
bottom: "conv8u"
top: "conv8_flat"
}
layers {
name: "split"
type: SPLIT
bottom: "conv8_flat"
top: "conv8_flata"
top: "conv8_flatb"
}
layers {
name: "ip"
type: INNER_PRODUCT
bottom: "conv8_flata"
top: "ip_zw"
inner_product_param {
num_output: 361
weight_filler {
type: "xavier"
}
bias_filler {
type: "constant"
}
}
}
layers {
name: "sigmoid"
type: SIGMOID
bottom: "ip_zw"
top: "ip_zws"
}
layers {
name: "ip2"
type: INNER_PRODUCT
bottom: "conv8_flatb"
top: "ip_label"
inner_product_param {
num_output: 121
weight_filler {
type: "xavier"
}
bias_filler {
type: "constant"
}
}
}
#only learning framework
layers {
name: "flat"
type: FLATTEN
bottom: "data_territory"
top: "flat"
}
layers {
name: "loss"
type: EUCLIDEAN_LOSS
bottom: "ip_zws"
bottom: "flat"
top: "lossa"
}
layers {
name: "accuracy"
type: ACCURACY
bottom: "ip_label"
bottom: "label"
top: "accuracy"
}
layers {
name: "loss"
type: SOFTMAX_LOSS
bottom: "ip_label"
bottom: "label"
top: "lossb"
}
Am 08.02.2015 um 11:43 schrieb Álvaro Begué:
What network architecture did you use? Can you give us some details?
On Sun, Feb 8, 2015 at 5:22 AM, Detlef Schmicker <d...@physik.de
<mailto:d...@physik.de>> wrote:
Hi,
I am working on a CNN for winrate and territory:
approach:
- input 2 layers for b and w stones
- 1. output: 1 layer territory (0.0 for owned by white, 1.0 for
owned by black (because I missed TANH in the first place I used
SIGMOID))
- 2. output: label for -60 to +60 territory leading by black
the loss of both outputs is trained
the idea is, that this way I do not have to put komi into input
and make the winrate from the statistics of the trained label:
e.g. komi 6.5: I sum the probabilites from +7 to +60 and get
something like a winrate
I trained with 800000 positions with territory information through
500 playouts from oakfoam, which I symmetrized by the 8
transformation leading to >6000000 positions. (It is expensive to
produce the positions due to the playouts....)
The layers are the same as the large network from Christopher
Clark <http://arxiv.org/find/cs/1/au:+Clark_C/0/1/0/all/0/1>, Amos
Storkey <http://arxiv.org/find/cs/1/au:+Storkey_A/0/1/0/all/0/1> :
http://arxiv.org/abs/1412.3409
I get reasonable territory predictions from this network (compared
to 500 playouts of oakfoam), the winrates seems to be
overestimated. But anyway, it looks as it is worth to do some more
work on it.
The idea is, I can do the equivalent of lets say 1000 playouts
with a call to the CNN for the cost of 2 playouts some time...
Now I try to do a soft turnover from conventional playouts to CNN
predicted winrates within the framework of MC.
I do have some ideas, but I am not happy with them.
Maybe you have better ones :)
Thanks a lot
Detlef
_______________________________________________
Computer-go mailing list
Computer-go@computer-go.org <mailto:Computer-go@computer-go.org>
http://computer-go.org/mailman/listinfo/computer-go
_______________________________________________
Computer-go mailing list
Computer-go@computer-go.org
http://computer-go.org/mailman/listinfo/computer-go
_______________________________________________
Computer-go mailing list
Computer-go@computer-go.org
http://computer-go.org/mailman/listinfo/computer-go