Backpropagation算法
来源:互联网 发布:瑜伽约课软件 编辑:程序博客网 时间:2024/06/08 23:16
Backpropagation算法
1.首先总结4个方程
分别介绍:
1.BP1:输出层的delta 也就是∂C/∂z,根据链接法则,∂C/∂z = ∂C/∂a * ∂a/∂z 注意这个*指的是点乘 也就是对应的元素相乘,而不是矩阵乘法
而对于不同Cost函数 有不同的对应的
2.算完该输出层的delta 再求该层的BP3和BP4
∂C/∂b=delta
∂C/∂w = delta与前一层的输出值也就是a进行点乘
为什么:
这是因为根据链接法则,
∂C/∂w =∂C/∂z * ∂z/∂w
z= wx + b
∂z/∂w = x 也就是上一层的a
用代码表示:
nabla_b[-1] = delta
nabla_w[-1] = np.dot(delta,activations[-2].transpose())
nabla_w[-1] = np.dot(delta,activations[-2].transpose())
接下来进行隐藏层的遍历
首先算出该层的delta
非输出层的误差依赖于其下一层误差
也就是说 计算该层delta需要 下一层的W 与 下一层的delta进行点乘
然后在计算BP3和BP4
用代码表示
for l in xrange(2,self.num_layers): z = zs[-l] sp = sigmoid_prime[z] delta = np.dot(self.weights[-l+1].transpose(),delta) * sp nabla_b[-l] = delta nabla_w[-l]= np.dot(delta,activations[-l-1].transpose())
num_layers:神经网络的层数
为什么bp算法快?
Backpropagation算法的优势在于让我们在一前一后遍历神经网络的时候,就可以把所有的偏导数计算出来
Backpropagation算法总结
用代码表示:
def backprop(self,x,y): activation = x activations = [x] zs = [] for b,w in zip(self.biases,self.weights): z = np.dot(w,activation)+b zs.append(z) activation = sigmoid(zs) activations.append(activation) #backward pass delta = self.cost_derivatice(activations[-1],y) * sigmoid_prime(zs[-1]) nabla_b[-1] = delta nabla_w[-1] = np.dot(delta,activations[-2].transpose()) for l in xrange(2,self.num_layers): z = zs[-l] sp = sigmoid_prime[z] delta = np.dot(self.weights[-l+1].transpose(),delta) * sp nabla_b[-l] = delta nabla_w[-l]= np.dot(delta,activations[-l-1].transpose()) return(nabla_b,nabla_w)
阅读全文
0 0
- BackPropagation算法
- Backpropagation算法
- backpropagation反向传播算法
- python实现BackPropagation算法
- 深度学习BP算法 BackPropagation
- Backpropagation
- backpropagation
- Backpropagation
- Backpropagation
- Backpropagation
- backpropagation
- 反向传播算法(backPropagation,简称BP算法)
- 机器学习--神经网络算法系列--BackPropagation算法
- Backpropagation算法-人脸朝向识别
- Backpropagation 算法公式推导及矩阵实现
- 神经网络BP反向传播算法Error Backpropagation
- 神经网络的反向传播算法Backpropagation
- 后向传播(BackPropagation)算法理解
- 多变量高斯分布之间的KL散度(KL Divergence)
- 简单实现网页选项卡功能
- ubuntu14.04安装opencv3.1.0
- jvm 查看当前java进程的启动参数
- ORA-01034和ORA-27101的解决方法
- Backpropagation算法
- 关于JMeter线程组中线程数,Ramp-Up Period,循环次数之间的设置概念
- string中的find函数和string::npos的使用
- Swagger
- 深信服软件测试笔试题
- 使用Oracle的数据连接池
- 正则表达式中\b和\s有什么区别
- 【牛客 题库】 求字符串长度和大小 || 基类和派生类的构造函数,隐式调用与显式调用 || 数组下标的数据类型
- XML语法规则