如何使用 tanh() 激活器将图像标签表示为用于 MNIST 分类的向量?

How to represent image label as a vector for MNIST classification with tanh() activator?

我正在训练完全连接的神经网络来对 MNIST 数据集进行分类。输出层中最饱和神经元的索引定义网络输出(从 0 到 9 的数字)。

我想使用tanh()激活函数(仅供学习)。

将图像标签表示为向量(用于生成将被反向传播的误差向量)的正确方法是什么?

对于 sigmoid() 激活器,该向量可以是零向量,在分类数字的位置只有 1。这是否意味着对于 tanh() 它应该是 -1 的向量而不是 0 的向量(基于函数的范围)?一般指导是什么?

如果您在这种情况下使用tanh,是的,您可以将图像标签设置为-1 或1。在这种情况下,'correct' 位将被推向正无穷大,'wrong' 位将被推向负无穷大。

一般来说,我建议改用 softmax。他们的关系很好解释here。 (tanh 只是 sigmoid*2-1)。虽然 sigmoid 执行二进制 class 化问题(这是一个 '7' 还是不是),但 softmax 执行多 class class 化(这是什么数字最有可能是).不同之处在于 softmax 代表所有输出的概率分布(如果我非常有信心这是一个“1”,那么它是“3”或“4”或其他的概率较低),而多个独立的 sigmoid 确实不在乎。

在这种情况下,由于您的输出是一个单热向量,因此每个数字的值肯定是相互关联的(即来自“1”的高响应应该会抑制其他响应)。使用softmax将使训练更稳定并给出更好的结果。