简介
请耐心等待,因为这将是一个很长的帖子。
基本上我正在尝试使用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
我知道我要求很多帮助,感谢您耐心阅读我的帖子。但如果有人能告诉我这是如何完成的,或者甚至指向正确的方向,我将非常感激。这个项目与工作无关或与学校有关,但对我来说仍然非常重要,因为我真的希望看到它。
由于