[Computer-go] Teaching Deep Convolutional Neural Networks to Play Go

Hugh Perkins hughperkins at gmail.com
Sat Feb 7 23:34:53 PST 2015


On Wed, Dec 31, 2014 at 9:29 PM, Hugh Perkins <hughperkins at gmail.com> wrote:

> I started building a convolution network library for OpenCL at
> https://github.com/hughperkins/ClConvolve/
>

Apparently building a convolutional neural network library is non-trivial
:-P  Anyway, I got up to 99.55% on mnist, and started looking at handling
kgsgo:
- created v2 kgsgo preprocessor at
https://github.com/hughperkins/kgsgo-dataset-preprocessor
   - bit more generic than first version
   - has a header, with number of planes, image size etc
   - doesnt store the all-1s planes :-P
- clconvolve now has a loader for this more-generic format
   - capable of loading chunks of the data on-demand, during loading,
rather than trying to load everything in in one go :-)
   - has now many of the traditional cnn features: max-pooling,
convolutional layers, fully-connected layers, zero-padding, normalization
layer, random translations layer, random crop layer,
multi-column/multi-net, weights persistence ...
- finally, started to get a signal, on the kgsgo data :-)  Not a very
strong signal, but a signal :-)  :

~/git/ClConvolve/build$ ./clconvolve1 dataset=kgsgo numtrain=100000
numtest=10000 netdef=8c5{z}-mp2-16c5{z}-mp3-500n-361n loadondemand=1
[...snip ...]
Using NVIDIA Corporation platform: NVIDIA CUDA
Using device: GRID K520
layer 0:InputLayer<unsigned char>{ outputPlanes 7 outputBoardSize 19 }
layer 1:NormalizationLayer { outputPlanes=7 outputBoardSize=19
translate=-12.3231 scale=0.00914321 }
layer 2:ConvolutionalLayer{ LayerDimensions{ inputPlanes=7
inputBoardSize=19 numFilters=8 filterSize=5 outputBoardSize=19 padZeros=1
biased=1 skip=0} RELU }
layer 3:PoolingLayer{ inputPlanes=8 inputBoardSize=19 poolingSize=2 }
layer 4:ConvolutionalLayer{ LayerDimensions{ inputPlanes=8 inputBoardSize=9
numFilters=16 filterSize=5 outputBoardSize=9 padZeros=1 biased=1 skip=0}
RELU }
layer 5:PoolingLayer{ inputPlanes=16 inputBoardSize=9 poolingSize=3 }
layer 6:FullyConnectedLayer{ numPlanes=500 boardSize=1 TANH }
layer 7:FullyConnectedLayer{ numPlanes=361 boardSize=1 LINEAR }
layer 8:SoftMaxLayer{ perPlane=0 numPlanes=361 boardSize=1 }
[...snip...]

after epoch 1 126554 ms
annealed learning rate: 0.002 training loss: 571665
 train accuracy: 604/100000 0.604%
test accuracy: 101/10000 1.01%
after tests 1419 ms
wrote weights to file, filesize 1011KB
dumpTimings 0

[... snip ...]

after epoch 10 126530 ms
annealed learning rate: 0.002 training loss: 499880
 train accuracy: 4763/100000 4.763%
test accuracy: 364/10000 3.64%
after tests 1414 ms
wrote weights to file, filesize 1011KB
dumpTimings 0
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://computer-go.org/pipermail/computer-go/attachments/20150208/0631ec80/attachment.html>


More information about the Computer-go mailing list