两层全连接神经网络的实现, 包括网络的实现、梯度的反向传播计算和权重更新过程:

# -*- coding: utf-8 -*-
import numpy as np# N is batch size; D_in is input dimension;
# H is hidden dimension; D_out is output dimension.
N, D_in, H, D_out = 64, 1000, 100, 10# Create random input and output data
x = np.random.randn(N, D_in)
y = np.random.randn(N, D_out)# Randomly initialize weights
w1 = np.random.randn(D_in, H)
w2 = np.random.randn(H, D_out)learning_rate = 1e-6
for t in range(500):# Forward pass: compute predicted yh = x.dot(w1)h_relu = np.maximum(h, 0)y_pred = h_relu.dot(w2)# Compute and print lossloss = np.square(y_pred - y).sum()print(t, loss)# Backprop to compute gradients of w1 and w2 with respect to lossgrad_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[h < 0] = 0grad_w1 = x.T.dot(grad_h)# Update weightsw1 -= learning_rate * grad_w1w2 -= learning_rate * grad_w2

这里解决了我一个错误的认知:以为最速下降法跟各个变量计算的导数无关, 而其实就是每个变量各自按自己的导数下降就可以实现函数最陡的坡进行下降;在图形上可以理解多个向量合并成一个方向;

反向传播 过程,核心代码如下

h = x.dot(w1)
h_relu = np.maximum(h, 0)
y_pred = h_relu.dot(w2)
loss = np.square(y_pred - y).sum()grad_y_pred = 2.0 * (y_pred - y)    # 64 x 10
grad_w2 = h_relu.T.dot(grad_y_pred) # 100 x 10
grad_h_relu = grad_y_pred.dot(w2.T) # 64 x 100
grad_h = grad_h_relu.copy()         # 64 x 100
grad_h[h < 0] = 0                   # 64 x 100
grad_w1 = x.T.dot(grad_h)           # 1000 x 100

问题:如何实现relu求导呢?

神经网络中的矩阵求导及反向传播推导相关推荐

  1. 机器学习中的矩阵求导的一点总结(三种方法求线性回归最佳参数)

    机器学习中的矩阵求导的一点总结(三种方法求线性回归最佳参数) 转载于:https://blog.csdn.net/promisejia/article/details/80159619?ops_req ...

  2. python矩阵求导代码_搞点枯燥的公式推导:深度学习中的矩阵求导

    最近看到一篇极视角转的文章算法推导核心!一次性梳理清楚,是时候搞定矩阵求导了!,想到前不久面试爱奇艺的时候一面的小哥一直让我手推全连接的公式推导,以及用Python+Numpy将过程实现,感觉自己对深 ...

  3. 【机器学习中的矩阵求导】(七)矩阵向量化复习

    学习总结 (1)矩阵乘法. Vec⁡(ABC⁡)=(C⊤⊗A)Vec⁡(B)\operatorname{Vec}(\operatorname{ABC})=\left(\mathbf{C}^{\top} ...

  4. 【机器学习中的矩阵求导】(六)Jacobian矩阵和Hessian矩阵

    学习总结 (0)回顾矩阵向量化,和 克罗内克积的主要运算法则. (1)梯度向量是雅克比矩阵的特例. (2)Hessian矩阵是梯度向量g(x)对自变量x的Jacobian矩阵,描述了函数的局部曲率. ...

  5. 矩阵求导公式的数学推导四部曲

    矩阵在线求导 矩阵求导--本质篇 矩阵求导--基础篇 矩阵求导--进阶篇 矩阵求导--补充篇

  6. 神经网络中矩阵求导术的应用

    神经网络中矩阵求导术的应用 序 记法约定 常用公式和定理 举例 多层神经网络(MLP)的梯度推导 Batch Normalization Layer的推导 序 本文假设读者熟悉一元微积分,线性代数,并 ...

  7. 机器学习中的线性代数之矩阵求导

    前面针对机器学习中基础的线性代数知识,我们做了一个常用知识的梳理.接下来针对机器学习公式推导过程中经常用到的矩阵求导,我们做一个详细介绍. 矩阵求导(Matrix Derivative)也称作矩阵微分 ...

  8. java二维矩阵怎么进行转置_矩阵求导的本质与分子布局、分母布局的本质(矩阵求导——本质篇)...

    〇. 前言 在一个多月前,针对有同学关于矩阵求导中分子布局.分母布局两者的区别的疑问,我写了如下的这篇答案. 矩阵求导中布局约定,两者布局的意义是什么?​www.zhihu.com 虽然这篇答案给出了 ...

  9. 机器学习BP算法及矩阵求导

    除了基本导数公式,本文介绍的矩阵求导方法不涉及任何公式的套用. 本文以neural network中最常见的一种计算单元为例,详细介绍了BP算法中涉及到的矩阵求导过程.刚接触机器学习时,曾被BP算法中 ...

最新文章

  1. js php 实现日历签到_Js 实现每日签到打卡轨迹功能。
  2. 企业一般用php还是js,网站开发用php还是js
  3. python lxml xpath_Python/lxml/Xpath:如何找到包含特定文本的行?
  4. freeCodeCamp认证
  5. 双十一终极预告:免单+半价+100% 中奖,没有套路,直降直减!
  6. [Java] 蓝桥杯ALGO-125 算法训练 王、后传说
  7. 地表径流分布数据/水文站点分布/降雨量分布/辐射分布数据
  8. CentOS-7 安装mosquitto(MQTT的开源消息代理)
  9. 超像素分割研究进展+SLIC近几年进展
  10. self paced learning(自步学习)
  11. linux下调试域格CLM920 NC5 pppd拨号
  12. Word2019如何取消保存文件位置默认为Onedrive-个人——文档
  13. CentOS6.5下使用NetHogs监控进程网络使用情况
  14. 小时代的成功可复制:郭敬明和他的大数据
  15. 通过internet连接到股票信息服务器,一种股票机的制作方法
  16. Android百度地图开发之指南针
  17. RF MEMS开关时代将开启-30?
  18. 风云叱咤,尚硅谷云原生实战教程(下篇)发布
  19. “刘知远实验室”的关系抽取实验复现
  20. 从量变到质变,中国移动在5G时代或将处于不利地位

热门文章

  1. python -使用del语句删除对象引用
  2. a标签阻止链接跳转(href=‘javascript:;‘)
  3. python PyQt5 QLabel()(可以用来显示文字、图片或作为放置一些控件提示信息的容器)
  4. python numpy中ndarray.reshape函数参数-1是什么意思?(模糊控制、自动推理)
  5. Python 计算机视觉(十三)—— 图像的傅里叶变换
  6. 计算机应用基础实训任务书,《计算机应用基础》任务书
  7. thymeleaf基本语法
  8. 每天学一点儿shell:linux常用快捷键
  9. 画出该lti系统的幅频特性响应曲线_模拟电路-放大电路的频率响应
  10. 东鹏马桶上水下水之谜