我正在尝试使用Keras创建一个有监督的chess神经网络,它的结构和属性与AlphaZero类似。我有一个GM级国际象棋游戏的大数据集,我用它来训练网络。我的神经网络的输入形状是(m,8,8,119),输出形状是(m,8,8,73),就像AlphaZero一样
我的网络具有与AlphaZero(多个卷积和剩余块)类似的体系结构。问题是,我的神经网络的输出形状是四维的,我不太确定如何使我的网络的最后一层——Softmax层,以及损失函数(可以是SparseCategoricCross熵或CategicCross熵)“处理”四维输出
我需要Softmax在维度1、2和3上求和(所有维度没有样本维度0),而不是一个特定维度。我发现您可以将Keras中的Softmax层作为一个整数列表,而不是一个轴作为axis参数(请参见https://www.tensorflow.org/api_docs/python/tf/keras/layers/Softmax),我尝试使用axis=[1, 2, 3]
,但是如果这不起作用,请纠正我。对于loss函数,我看到CategoricalCrossentropy loss没有axis
参数。至于SparseCategoricalCrossentropy有一个axis
参数,但我没有看到整数列表可以作为axis参数传递给它
在我的代码中,我尝试使用CategoricalCrossentropy(每个样本有一个形状为(8,8,73)的热编码标签)和SparseCategoricCrossEntropy(每个样本有一个形状为(3)的标签,指示正确的三个索引),但它们都给出了错误/奇怪的结果(例如:在只训练了10场比赛(有时准确率高达50%)和其他奇怪的结果后,精度非常高),因此我被迫在Softmax层之前展平输入,然后将结果索引转换回原来的三个索引形式,以匹配形状(8、8、73)
如果你有多维问题的解决方案,我将不胜感激
目前没有回答
相关问题 更多 >
编程相关推荐