为什么误差计算同时使用损失和激活函数的导数?

时间:2017-08-23 18:49:08

标签: python-3.x neural-network backpropagation

在以下神经网络的代码示例中,通过将损失(expected-output)乘以sigmoid函数的导数([x][1-x],未示出)来计算误差。 请注意解决输出层的函数的else部分。

def backward_propagate_error(network, expected):
    for i in reversed(range(len(network))):
        layer = network[i]
        errors = list()
        if i != len(network)-1:
            for j in range(len(layer)):
                error = 0.0
                for neuron in network[i+1]:
                    error += (neuron['weights'][j] * neuron['delta'])
                errors.append(error)
        else:
            for j in range(len(layer)):
                neuron = layer[j]
                errors.append(expected[j] - neuron['output'])
        for j in range(len(layer)):
            neuron = layer[j]
            neuron['delta'] = errors[j] * transfer_derivative(neuron['output'])

我知道这会影响每个神经元倾向于极点,或更多https://developers.podio.com/clients/dotnet,但我不确定为什么这对整个网络有帮助。为什么这个功能有用?它似乎是反向传播的核心。

0 个答案:

没有答案