多层感知机在使用 sigmoid 激活函数时效果良好,但在使用双曲正切函数时则不然

我编写了一个只有单层的简单 MLP。当使用 sigmoid 激活函数学习 XOR 函数时,损失值持续下降。然而,如果我将 XOR 数据的标签从 [0, 1] 改为 [-1, 1],并使用 tanh 激活函数,损失值却没有下降。仅仅通过改变标签并使用 tanh 激活函数应该仍然能正常工作,不是吗?如果是这样的话,我的 tanh 实现哪里出了问题呢?