for i, hidden_neuron in enumerate(network[0])]
return [hidden_grads, output_grads]
上面计算过程背后的数学原理并不是很难,但它涉及一些乏味的推演和对细节的打磨,因此这是留给你的练习.
有了计算梯度的能力,现在可以训练神经网络了.下面学习之前手动设计的异或网络.
首先生成训练数据并使用随机权重初始化神经网络:
import random
random.seed(0)
# 训练数据
xs = [[0., 0], [0., 1], [1., 0], [1., 1]]
ys = [[0.], [1.], [1.], [0.]]
# 随机权重初始