使用 Pytorch 预测棋盘位置
Predicting a Chess Board Position using Pytorch
我想使用 pytorch/keras 预测当前的棋盘。 (我们暂时不用担心输入问题。)
我怎么知道的?
棋盘有 8x8 个位置 (64),每个位置可以是黑色或白色棋子 (12) 或根本没有棋子 (1)。我计划将此表示用于棋盘(欢迎提出其他建议!):
https://en.wikipedia.org/wiki/Board_representation_(computer_chess)#Square_list
例如:
2 3 4 5 6 4 3 2
1 1 1 1 1 1 1 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
-1-1-1-1-1-1-1-1
-2-3-4-5-6-4-3-2`
据我所知,不可能预测这样的事情。因为我的最后一层必须预测的 classes 的数量是 448 (64x7),而且我觉得 NN 做不到。此外还有 softmax 无法工作的问题(imo)。损失函数也可能成为一个问题。
有人知道怎么做吗?或者可以为我指明正确的方向,因为 multi-class classification 并不是这项任务的正确术语。我正在考虑创建 6 个网络,为每个片段创建一个 classification。所以一个 8x8 数组看起来像这样(对于车):
10000001
00000000
00000000
00000000
00000000
-1000000-1
不过问题还是挺像的。
我认为创建 64 个神经网络,每个神经网络负责一个位置会稍微简化问题。但是训练起来会很痛苦。
期待听到您的建议!
对于任何想知道如何做到这一点的人。我想我明白了:
你在 8x8x13 数组的第三个维度上构建一个 Softmax,并得到一个包含所有棋子的 8x8 矩阵。
感谢@Prune。以后我会调整我的问题。
我想使用 pytorch/keras 预测当前的棋盘。 (我们暂时不用担心输入问题。)
我怎么知道的?
棋盘有 8x8 个位置 (64),每个位置可以是黑色或白色棋子 (12) 或根本没有棋子 (1)。我计划将此表示用于棋盘(欢迎提出其他建议!):
https://en.wikipedia.org/wiki/Board_representation_(computer_chess)#Square_list
例如:
2 3 4 5 6 4 3 2
1 1 1 1 1 1 1 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
-1-1-1-1-1-1-1-1
-2-3-4-5-6-4-3-2`
据我所知,不可能预测这样的事情。因为我的最后一层必须预测的 classes 的数量是 448 (64x7),而且我觉得 NN 做不到。此外还有 softmax 无法工作的问题(imo)。损失函数也可能成为一个问题。
有人知道怎么做吗?或者可以为我指明正确的方向,因为 multi-class classification 并不是这项任务的正确术语。我正在考虑创建 6 个网络,为每个片段创建一个 classification。所以一个 8x8 数组看起来像这样(对于车):
10000001
00000000
00000000
00000000
00000000
-1000000-1
不过问题还是挺像的。 我认为创建 64 个神经网络,每个神经网络负责一个位置会稍微简化问题。但是训练起来会很痛苦。 期待听到您的建议!
对于任何想知道如何做到这一点的人。我想我明白了:
你在 8x8x13 数组的第三个维度上构建一个 Softmax,并得到一个包含所有棋子的 8x8 矩阵。 感谢@Prune。以后我会调整我的问题。