我一直在从头开始构建神经网络,以对MNIST数据集中的数字进行分类。到目前为止,我已经建立了一个多层网络,并在向前传播过程中将sigmoid函数应用于激活。所有权重已在-1 <= weight <= 1范围内初始初始化。
当使用梯度下降向后传播误差时,我使用输出激活来计算S型导数:
sigmoidDerivatives = outputActivations。*(1-outputActivations)
然后我将输出错误计算为:
outputError =(outputActivations-标签)。* sigmoidDerivatives。
我要正确计算输出误差吗?权重如何以及何时更新?权重是否随着每次新迭代(或作为训练输入的新图像)而更新?在所有迭代完成后(一个时期),是否使用所有错误的平均数来更新权重?
任何帮助将不胜感激。该项目正在Matlab中完成。