在已知目标函数的基础上,用随机梯度下降算法对目标函数进行优化,不断更新权重。
神经网络要计算每个节点误差项来进行权重更新。显然,计算一个节点的误差项,需要先计算每个与其相连的下一层节点的误差项。这就要求误差项的计算顺序必须是从输出层开始,然后反向依次计算每个隐藏层的误差项,直到与输入层相连的那个隐藏层。这就是反向传播算法的名字的含义。
import numpy as np
class FullConnectedLayer(object):
def __init__(self, input_size, output_size, activator):
'''
构造函数
:param input_size: 本层输入向量的维度
:param output_size:本层输出向量的维度
:param activator:激活函数
'''
self.input_size = input_size
self.output_size = output_size
self.activator = activator
#权重矩阵w:output_size * input_size
self.w = np.random.uniform(-0.1, 0.1, (output_size, input_size))
#偏置项
self.b = np.zeros((output_size,