Python Tflearn/Tensorflow值错误:“0”;无法为张量';输入形状(50、11、11)的值;TargetsData/Y:0';,其形状为';(?,1)和#x27&引用;

Python Tflearn/Tensorflow值错误:“0”;无法为张量';输入形状(50、11、11)的值;TargetsData/Y:0';,其形状为';(?,1)和#x27&引用;,python,tensorflow,tflearn,Python,Tensorflow,Tflearn,我是NN和tflearn的新手,最近我正在编写一个python程序,可以玩Gomoku游戏。我想用很多游戏来训练我的人际网络。这是输入(train_state),一个包含许多4*11*11 numpy数组的列表,描述当前状态: array([[[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0], [0, 0, 1, 0

我是NN和tflearn的新手,最近我正在编写一个python程序,可以玩Gomoku游戏。我想用很多游戏来训练我的人际网络。这是输入(train_state),一个包含许多4*11*11 numpy数组的列表,描述当前状态:

array([[[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    [0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0],
    [0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0],
    [0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0],
    [0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0],
    [0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0],
    [0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0],
    [0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0],
    [1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0],
    [0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0],
    [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]],

   [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    [0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0],
    [0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0],
    [0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0],
    [1, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0],
    [0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0],
    [0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0],
    [0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    [0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0]],

   [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    [0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0],
    [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]],

   [[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
    [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
    [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
    [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
    [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
    [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
    [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
    [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
    [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
    [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
    [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]]])
trian_nextmove是许多11*11数组的列表,如下所示:

array([[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
   [0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0],
   [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
   [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
   [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
   [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
   [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
   [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
   [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
   [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
   [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]])]
我发现即使使用最简单的网络,也会出错。 代码如下:

with tf.Graph().as_default():
g=tflearn.input_data(shape=[None,4,11,11],name='input')

g=tflearn.fully_connected(g,128,activation='relu',name="hidden1")
g=tflearn.fully_connected(g,64,activation='relu',name="hidden2")
g=tflearn.fully_connected(g,1,activation='softmax',name="output")
g=tflearn.regression(g,optimizer='adam',learning_rate=0.1,metric='R2',loss='categorical_crossentropy')

m=tflearn.DNN(g)
m.fit(train_state,train_nextmove,n_epoch=10,batch_size=50,snapshot_epoch=False,shuffle=True)

x0=train_state[34]
pred0=m.predict(x0)
打印(pred0) 打印(“保存模型”)
g、 保存('g.tflearn')

在答案部分证明解决方案,即使答案出现在评论中,也是为了社区的利益


问题在于
trian\u nextmove的形状
,将
shape(11,11)
的trian\u nextmove重塑为输出形状(121)解决了问题。

证明了答案部分的解决方案,即使答案出现在评论中,也是为了社区的利益


问题在于
trian\u nextmove
的形状,将
shape(11,11)
的trian\u nextmove重塑为输出形状
(121)
解决了问题。

我没有使用tflearn,但似乎最后一层是由一个神经元组成的密集层,这将使输出形状
(1,)
但是您在
fit
功能中通过了形状
(11,11)
的目标非常感谢!我已经通过重塑trian_nextmove to output shape(121)解决了这个问题。我没有使用tflearn,但你的最后一层似乎是由一个神经元组成的密集层,这将使你的输出形状
(1,)
,但是你通过了
fit
函数中的shape
(11,11)
,非常感谢!我已经通过重塑trian_nextmove以输出形状(121)解决了这个问题,然后它就可以工作了。