我创建了一个神经网络来对 MNIST 手写数字数据集进行分类。它使用softmax作为输出层的激活函数和隐藏层的各种其他函数。
在这个问题的帮助下,我的实现似乎通过了所有激活函数的梯度检查,但是当涉及到我的训练数据的实际运行时,如果我使用sigmoid ,我得到的准确度约为 87%或tanh作为隐藏层的激活函数,但如果我使用余弦,它会返回 9% 的准确度。用更多的迭代(100、200、500)训练网络也没有任何效果,事实上,无论经过多少个时期,我的最小化函数都无法移动到成本函数的 2.18xxx 以下。
在使用余弦之前是否需要执行一些预处理步骤,如果不是,为什么这个激活函数工作得如此糟糕?