深度学习中使用relu激活函数怎样进行训练这时候bp算法怎样计算梯度
和使用sigmoid, tanh作为激活函数基本没有区别吧,除了更加简单,权重更新的公式都是:
【深度学习中使用relu激活函数怎样进行训练这时候bp算法怎样计算梯度】
其中miu为learning rate, O为input,E为Error = (Real Value - Predicted Value), 后面的就是激活函数的derivative.
具体地,对于不同的激活函数就是:
具体实现,用numpy写一个两层的简单神经网络:import numpy as npN, D_in, H, D_out = 64, 1000, 100, 10x = np.random.randn(N, D_in)y = np.random.randn(N, D_out)w1 = np.random.randn(D_in, H)w2 = np.random.randn(N, D_out)learning_rate = 1e-6for t in range(500): h = x.dot(w1) h_relu = np.maximum(h, 0) y_pred = h_relu.dot(w2) loss = np.square*(y_pred - y).sum() print(t, loss) grad_y_pred = 2.0 * (y_pred - y) grad_w2 = h_relu.T.dot(grad_y_pred) grad_h_relu = grad_y_pred.dot(w2.T) grad_h = grad_h_relu.copy() grad_h = 0 grad_w1 = x.T.dot(grad_h) w1 -= learning_rate * grad_w1 w2 -= learning_rate * grad_w2代码来自PyTorch Tutorial
以上。
■网友
我简单描述一下向量化的表示,如果正向传递是:f(行向量X1 乘 系数矩阵w2) 等于 行向量X2。那么,反向传递时候先计算X2层对应的残差行向量Delta2,然后用行向量X1的转置 乘 Delta2就是W2的梯度了。至于Delta2是怎么计算的呢,只需要 Delta3 乘 W3的转置再阿达马乘积来乘“f(行向量X1 乘 系数矩阵w2)”的导数就能得到Delta2。至于Delta3怎么来的呢,用同样的方法从Delta4推过来
■网友
还是让我帮你顶上去?
推荐阅读
- 四川乐山市犍为县发生4.2级地震震源深度13千米
- 四川自贡市荣县发生3.2级地震震源深度10千米
- 『先进』长江流域最先进洗舱站在宁投运 油可分离回收,水能循环使用
- 四川德阳市绵竹市发生3.4级地震震源深度8千米
- 汽车|冬天怎样让车内温度快速升高?座椅加热的最佳使用方式二,外循环的作用总结
- 汽车|迈凯伦Artura不再使用迈凯伦祖传V8引擎了?
- 现在在线学习视频有很多了,为啥大部分人还是喜欢下载下来观看
- 换个角度看车市|深度:长城炮越野皮卡1.5万公里长测之技术状态汇总
- 婴儿|美国儿科学会: 1岁以下婴儿不推荐学习游泳
- 新疆克孜勒苏州阿克陶县发生3.3级地震 震源深度140千米
