我正在尝试制作数字识别程序。我将输入一个数字的白/黑图像,我的输出层将触发相应的数字(一个神经元将从输出层中的0 - > 9个神经元中射出)。我完成了一个二维BackPropagation神经网络。我的拓扑尺寸为[5] [3] - > [3] [3] - > 1 [10]。所以它是一个2-D输入层,一个2-D隐藏层和一个1-D输出层。但是我得到了奇怪和错误的结果(平均错误和输出值)。
在此阶段进行调试非常耗时。因此,我很想知道这是否是正确的设计,所以我继续调试。以下是我实施的流程步骤:
构建网络:除了输出层(无偏差)之外,每个层都有一个偏差。 Bias的输出值总是= 1.0,但是它的Connections Weights会像网络中的所有其他神经元一样在每次传递时更新。所有重量范围均为0.000 - > 1.000(无底片)
获取输入数据(0 | OR | 1)并将第n个值设置为输入图层中的第n个神经元输出值。
前馈:在每个层中的每个神经元'n'上(输入层除外):
获取结果:获取输出图层中神经元的输出值
BackPropagation:
这是我对第七位的尝试。输出是Neuron#zero和Neuron#6。神经元6应该携带1并且Neuron#zero应该携带0.在我的结果中,除了6之外的所有神经元都携带相同的值(#zero是样本)。
对不起,很长的帖子。如果您知道这一点,那么您可能知道它有多酷,以及在一个帖子中有多大。提前谢谢
答案 0 :(得分:0)
具有对数丢失的Softmax通常用于多类输出层激活功能。你有多类/多项:10个可能的数字包括10个类。
因此,您可以尝试将输出图层激活功能更改为softmax
http://en.wikipedia.org/wiki/Softmax_function
人工神经网络
在神经网络模拟中, softmax功能通常在网络的最后一层实现 用于分类。然后在日志下训练这样的网络 损失(或交叉熵)制度,给出非线性变体 多项Logistic回归。
让我们知道它有什么影响。 -