使用 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个字段可以X
或o
。左边的数字是对手的下一步(对手总是0)。而字母代表游戏的结果。我决定将所有 "."
替换为 0
,将 x
替换为 1,将 o
替换为 2。 L
或 W
使用一种热编码。我用未来的步骤压缩我的位置并将其输入模型。那就是我遇到麻烦的地方。我的 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.]
(浮点型)。
我想创建一个模型,可以根据玩家的动作预测 9x9 井字游戏的赢家。 这是我的数据集中的示例:
..................................x.............................................. 14 L
..............o...................x.................x............................ 67 L
..............o...............x...x.................x..............o............. 2 L
有81个字段可以X
或o
。左边的数字是对手的下一步(对手总是0)。而字母代表游戏的结果。我决定将所有 "."
替换为 0
,将 x
替换为 1,将 o
替换为 2。 L
或 W
使用一种热编码。我用未来的步骤压缩我的位置并将其输入模型。那就是我遇到麻烦的地方。我的 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.]
(浮点型)。