深度学习我看的是neural network and deep learning 这本书,这本书写的真的非常好,是我的导师推荐的。这篇博客里的代码也是来自于这,我最近是在学习Pytorch,学习的过程我觉得还是有必要把代码自己敲一敲,就像当初学习机器学习一样。也是希望通过这个代码能够加深对反向传播原路的认识。
在下面的代码中,比较复杂的部分就是mini_batch部分了,我们一定要有清晰的认识,我们在上一篇博客中给出了反向传播方法四公式,而且在文章的末尾又给出了使用这四个公式的方法。
所以牢牢记住这个个流程,一共分为:
1.输入训练集
2.前向传播
3.计算输出层产生的错误
4.反向传播的错误
5.使用梯度下降,训练参数
我们将在下面的代码中用以上的几个数字(1到5)来表示当前代码是哪个过程
import random
import mnist_loader
import numpy as np
class Network(object):
def __init__(self, sizes):
"""The list ``sizes`` contains the number of neurons in the
respective layers of the network. For example, if the list
was [2, 3, 1] then it would be a three-layer network, with the
first layer containing 2 neurons, the second layer 3 neurons,
and the third layer 1 neuron. The biases and weights for the
network are initialized randomly, using a Gaussian
distribution with mean 0, and variance 1. Note that the first
layer is assumed to be an input layer, and by convention we
won't set any biases