使用 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。以后我会调整我的问题。