使用 pytorch 创建井字游戏模型的最佳方法

Best way to create a tic-tac-toe model with pytorch

我想创建一个模型,可以根据玩家的动作预测 9x9 井字游戏的赢家。 这是我的数据集中的示例:

..................................x.............................................. 14 L
..............o...................x.................x............................ 67 L
..............o...............x...x.................x..............o............. 2 L

有81个字段可以Xo。左边的数字是对手的下一步(对手总是0)。而字母代表游戏的结果。我决定将所有 "." 替换为 0,将 x 替换为 1,将 o 替换为 2。 LW 使用一种热编码。我用未来的步骤压缩我的位置并将其输入模型。那就是我遇到麻烦的地方。我的 train_x 维度是 (249561, 80, 1)。我的样本火车是

tensor([0, 0, 0, 0, 1, 2, 1, 2, 0, 0, 2, 0, 0, 0, 0, 2, 1, 0, 0, 0, 1, 2, 2, 2,
        0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2, 0, 2, 0, 1, 0, 0, 0, 2, 0, 1, 0, 1, 1,
        1, 0, 2, 0, 0, 1, 2, 1, 0, 0, 1, 2, 2, 1, 1, 0, 0, 0, 0, 0, 2, 1, 0, 2,
        0, 0, 1, 0, 0, 0, 2, 0], [67])

我试过了

self.fc = nn.Sequential(
        nn.Linear(80, 4096),
        nn.ReLU(),
        nn.Dropout(p=0.5),
        nn.Linear(4096, 2048),
        nn.ReLU(),
        nn.Dropout(p=0.5),
        nn.Linear(2048, 1),
    ) 

def forward(self, x):
    logit = self.fc(x)
    return logit

当我进行训练循环时出现错误 RuntimeError: Expected object of scalar type Float but got scalar type Long for argument #2 'mat1' in call to _th_addmm 我有两个问题。我的数据处理正确吗?我应该使用什么模型?

要解决描述性很强的 RuntimeError,您必须简单地将张量从 Long 转换为 Float:

input_sample = input_sample.float()

或者,在构建示例时,将替换从 [0, 1, 2](长整型)更改为 [0., 1., 2.](浮点型)。