What are you using for loss?
I use this,
layers {
name: "loss"
type: EUCLIDEAN_LOSS
bottom: "fc14"
bottom: "label"
top: "loss"
}
--------------------------------------------------------
name: "AyaNet"
layers {
name: "mnist"
type: DATA
top: "data"
data_param {
source: "train_i50_v_2k_leveldb"
# backend: LMDB
batch_size: 256
}
include: { phase: TRAIN }
}
layers {
name: "mnist"
type: HDF5_DATA
top: "label"
hdf5_data_param {
source: "/home/yss/test/train_v_2k_i50_11_only_hdf5/aya_data_list.txt"
batch_size: 256
}
include: { phase: TRAIN }
}
layers {
name: "mnist"
type: DATA
top: "data"
data_param {
source: "test_i50_v_2k_leveldb"
# backend: LMDB
batch_size: 256
}
include: { phase: TEST }
}
layers {
name: "mnist"
type: HDF5_DATA
top: "label"
hdf5_data_param {
source: "/home/yss/test/test_v_2k_i50_11_only_hdf5/aya_data_list.txt"
batch_size: 256
}
include: { phase: TEST }
}
#this part should be the same in learning and prediction network
layers {
name: "conv1_5x5_128"
type: CONVOLUTION
blobs_lr: 1.
blobs_lr: 2.
bottom: "data"
top: "conv1"
convolution_param {
num_output: 128
kernel_size: 5
pad: 2
weight_filler {
type: "xavier"
}
bias_filler {
type: "constant"
}
}
}
layers {
name: "relu1"
type: RELU
bottom: "conv1"
top: "conv1"
}
layers {
name: "conv2_3x3_128"
type: CONVOLUTION
blobs_lr: 1.
blobs_lr: 2.
bottom: "conv1"
top: "conv2"
convolution_param {
num_output: 128
kernel_size: 3
pad: 1
weight_filler {
type: "xavier"
}
bias_filler {
type: "constant"
}
}
}
layers {
name: "relu2"
type: RELU
bottom: "conv2"
top: "conv2"
}
layers {
name: "conv3_3x3_128"
type: CONVOLUTION
blobs_lr: 1.
blobs_lr: 2.
bottom: "conv2"
top: "conv3"
convolution_param {
num_output: 128
kernel_size: 3
pad: 1
weight_filler {
type: "xavier"
}
bias_filler {
type: "constant"
}
}
}
layers {
name: "relu3"
type: RELU
bottom: "conv3"
top: "conv3"
}
layers {
name: "conv4_3x3_128"
type: CONVOLUTION
blobs_lr: 1.
blobs_lr: 2.
bottom: "conv3"
top: "conv4"
convolution_param {
num_output: 128
kernel_size: 3
pad: 1
weight_filler {
type: "xavier"
}
bias_filler {
type: "constant"
}
}
}
layers {
name: "relu4"
type: RELU
bottom: "conv4"
top: "conv4"
}
layers {
name: "conv5_3x3_128"
type: CONVOLUTION
blobs_lr: 1.
blobs_lr: 2.
bottom: "conv4"
top: "conv5"
convolution_param {
num_output: 128
kernel_size: 3
pad: 1
weight_filler {
type: "xavier"
}
bias_filler {
type: "constant"
}
}
}
layers {
name: "relu5"
type: RELU
bottom: "conv5"
top: "conv5"
}
layers {
name: "conv6_3x3_128"
type: CONVOLUTION
blobs_lr: 1.
blobs_lr: 2.
bottom: "conv5"
top: "conv6"
convolution_param {
num_output: 128
kernel_size: 3
pad: 1
weight_filler {
type: "xavier"
}
bias_filler {
type: "constant"
}
}
}
layers {
name: "relu6"
type: RELU
bottom: "conv6"
top: "conv6"
}
layers {
name: "conv7_3x3_128"
type: CONVOLUTION
blobs_lr: 1.
blobs_lr: 2.
bottom: "conv6"
top: "conv7"
convolution_param {
num_output: 128
kernel_size: 3
pad: 1
weight_filler {
type: "xavier"
}
bias_filler {
type: "constant"
}
}
}
layers {
name: "relu7"
type: RELU
bottom: "conv7"
top: "conv7"
}
layers {
name: "conv8_3x3_128"
type: CONVOLUTION
blobs_lr: 1.
blobs_lr: 2.
bottom: "conv7"
top: "conv8"
convolution_param {
num_output: 128
kernel_size: 3
pad: 1
weight_filler {
type: "xavier"
}
bias_filler {
type: "constant"
}
}
}
layers {
name: "relu8"
type: RELU
bottom: "conv8"
top: "conv8"
}
layers {
name: "conv9_3x3_128"
type: CONVOLUTION
blobs_lr: 1.
blobs_lr: 2.
bottom: "conv8"
top: "conv9"
convolution_param {
num_output: 128
kernel_size: 3
pad: 1
weight_filler {
type: "xavier"
}
bias_filler {
type: "constant"
}
}
}
layers {
name: "relu9"
type: RELU
bottom: "conv9"
top: "conv9"
}
layers {
name: "conv10_3x3_128"
type: CONVOLUTION
blobs_lr: 1.
blobs_lr: 2.
bottom: "conv9"
top: "conv10"
convolution_param {
num_output: 128
kernel_size: 3
pad: 1
weight_filler {
type: "xavier"
}
bias_filler {
type: "constant"
}
}
}
layers {
name: "relu10"
type: RELU
bottom: "conv10"
top: "conv10"
}
layers {
name: "conv11_3x3_128"
type: CONVOLUTION
blobs_lr: 1.
blobs_lr: 2.
bottom: "conv10"
top: "conv11"
convolution_param {
num_output: 128
kernel_size: 3
pad: 1
weight_filler {
type: "xavier"
}
bias_filler {
type: "constant"
}
}
}
layers {
name: "relu11"
type: RELU
bottom: "conv11"
top: "conv11"
}
layers {
name: "conv12_1x1_1"
type: CONVOLUTION
blobs_lr: 1.
blobs_lr: 2.
bottom: "conv11"
top: "conv12"
convolution_param {
num_output: 1
kernel_size: 1
pad: 0
weight_filler {
type: "xavier"
}
bias_filler {
type: "constant"
}
}
}
layers {
name: "relu12"
type: RELU
bottom: "conv12"
top: "conv12"
}
layers {
name: "fc13"
type: INNER_PRODUCT
bottom: "conv12"
top: "fc13"
inner_product_param {
num_output: 256
weight_filler {
type: "xavier"
}
bias_filler {
type: "constant"
}
}
}
layers {
name: "relu13"
type: RELU
bottom: "fc13"
top: "fc13"
}
layers {
name: "fc14"
type: INNER_PRODUCT
bottom: "fc13"
top: "fc14"
inner_product_param {
num_output: 1
weight_filler {
type: "xavier"
}
bias_filler {
type: "constant"
}
}
}
layers {
name: "tanh14"
type: TANH
bottom: "fc14"
top: "fc14"
}
layers {
name: "loss"
type: EUCLIDEAN_LOSS
bottom: "fc14"
bottom: "label"
top: "loss"
}
--------------------------------------------------------
Thanks,
Hiroshi Yamashita
----- Original Message -----
From: "Detlef Schmicker" <d...@physik.de>
To: <computer-go@computer-go.org>
Sent: Saturday, March 19, 2016 7:41 PM
Subject: Re: [Computer-go] Value Network
What are you using for loss?
this:
layers {
name: "loss4"
type: EUCLIDEAN_LOSS
loss_weight: 2.0
bottom: "vvv"
bottom: "pool2"
top: "accloss4"
}
?
Am 04.03.2016 um 16:23 schrieb Hiroshi Yamashita:
Hi,
I tried to make Value network.
"Policy network + Value network" vs "Policy network" Winrate
Wins/Games 70.7% 322 / 455, 1000 playouts/move 76.6% 141 /
184, 10000 playouts/move
It seems more playouts, more Value network is effetctive. Games is
not enough though. Search is similar to AlphaGo. Mixing parameter
lambda is 0.5. Search is synchronous. Using one GTX 980. In 10000
playouts/move, Policy network is called 175 times, Value network is
called 786 times. Node Expansion threshold is 33.
Value network is 13 layers, 128 filters. (5x5_128, 3x3_128 x10,
1x1_1, fully connect, tanh) Policy network is 12 layers, 256
filters. (5x5_256, 3x3_256 x10, 3x3_1), Accuracy is 50.1%
For Value network, I collected 15804400 positions from 987775
games. Games are from GoGoD, tygem 9d, 22477 games
http://baduk.sourceforge.net/TygemAmateur.7z KGS 4d over, 1450946
games http://www.u-go.net/gamerecords-4d/ (except handicaps
games). And select 16 positions randomly from one game. One game is
divided 16 game stage, and select one of each. 1st and 9th position
are rotated in same symmetry. Then Aya searches with 500 playouts,
with Policy network. And store winrate (-1 to +1). Komi is 7.5.
This 500 playouts is around 2730 BayesElo on CGOS.
I did some of this on Amazon EC2 g2.2xlarge, 11 instances. It took
2 days, and costed $54. Spot instance is reasonable. However
g2.2xlarge(GRID K520), is 3x slower than GTX 980. My Pocicy
network(12L 256F) takes 5.37ms(GTX 980), and 15.0ms(g2.2xlarge).
Test and Traing loss are 0.00923 and 0.00778. I think there is no
big overfitting.
Value network is effective, but Aya has still fatal semeai
weakness.
Regards, Hiroshi Yamashita
_______________________________________________
Computer-go mailing list
Computer-go@computer-go.org
http://computer-go.org/mailman/listinfo/computer-go