国际象棋引擎的Theano神经网络实现

时间:2017-02-01 18:33:38

标签: python neural-network deep-learning theano

简介

请耐心等待,因为这将是一个很长的帖子。

基本上我正在尝试使用NN实现国际象棋引擎。我的想法是根据数百万个位置训练单层NN(我拆分文件,每个文件由几千个位置组成)。我的NN的输入是64个节点(每个方格1个),输入值在[-6, 6]之间,13个不包括任何一个。

我正在尝试使用Theano实现单个隐藏层NN。我阅读了关于Theano的教程,我对NN有一个粗略的了解(我参加了由Andrew Ng教授的ML课程)。我认为应该足以完成我想做的事情。

我的输入文件

每个FEN文件包含数千个位置。我使用鳕鱼来分析每个位置,并获得静态评估得分Y.之后,我将每个FEN位置转换为1*64 X向量,如下所示:

X=0,3,0,-3,0,-6,0,-4,0,3,0,0,0,-1,-1,0,0,0,0,0,-1,-2,0,0,1,-2,0,0,0,0,0,-1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,4,0,0,4,0,6

Y=332

我有500万这些。

我的问题

我很难在Theano实施NN的训练部分。这是我的NN代码的片段(主要是从教程中获取,如果我使用...那么这意味着我有与教程http://deeplearning.net/tutorial/logreg.html#logreg相同的代码。)

class LogisticRegression(object):
    def __init__(self, input, n_in, n_out):
        ...

class HiddenLayer(object):
    def __init__(self, rng, input, n_in, n_out, W=None, b=None,
                 activation=T.tanh):
        ...

class MLP(object):
    def __init__(self, rng, input, n_in, n_hidden, n_out):
        ...

def main():
    rng = numpy.random.RandomState(1234)
    x=numpy.loadtxt('x.txt', delimiter=',')
    y=numpy.loadtxt('y.txt', delimiter=',')
    learning_rate=0.01 
    L1_reg=0.00 
    L2_reg=0.0001 
    n_epochs=1000,
    n_hidden=2000
    index = T.lscalar()
    x = T.matrix('x')
    y = T.ivector('y')
    n_train_batches = x.shape[1]
    classifier = MLP(rng=rng, input=x, n_in=64, n_hidden=n_hidden, n_out=1)
    cost = (
        classifier.negative_log_likelihood(y)
        + L1_reg * classifier.L1
        + L2_reg * classifier.L2_sqr
    )
    gparams = [T.grad(cost, param) for param in classifier.params]
    updates = [
        (param, param - learning_rate * gparam)
        for param, gparam in zip(classifier.params, gparams)
    ]
    print('... training')

   ## I AM HAVING TROUBLE HERE IMPLEMENTING THE TRAINING PART OF THIS CODE

我知道我要求很多帮助,感谢您耐心阅读我的帖子。但如果有人能告诉我这是如何完成的,或者甚至指向正确的方向,我将非常感激。这个项目与工作无关或与学校有关,但对我来说仍然非常重要,因为我真的希望看到它。

由于

0 个答案:

没有答案
相关问题