加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

100行Python代码,轻松搞定神经收集

发布时间:2019-05-06 06:16:28 所属栏目:建站 来源:eisenjulian 编译:周家乐、钱天培 用tensor
导读:大数据文摘出品 来历:eisenjulian 编译:周家乐、钱天培 用tensorflow,pytorch这类深度进修库来写一个神经收集早就不特别了。 然则,你知道怎么用python和numpy来优雅地搭一个神经收集嘛? 现现在,有多种深度进修框架可供选择,他们带有自动微分、基于图

焦点设法着实始终未变。从我们在学校进修怎样求导时, 就应该知道这一点了。假如我们可以或许追踪最终求出标量输出的计较, 而且我们知道怎样对简朴操纵求导 (譬喻加法、乘法、幂、指数、对数等等), 我们就可以算出输出的梯度。

假设我们有一个线性的中间层f,由矩阵乘法暗示(暂且不思量偏置):

为了用梯度降落法调解w值,我们必要计较梯度∂l/∂w。这里我们可以调查到,改变y从而影响l是一个要害。

每一层都必需满意下面这个前提: 假如给出了丧失函数相对付这一层输出的梯度, 就可以获得丧失函数相对付这一层输入(即上一层的输出)的梯度。

此刻应用两次链式法例获得丧失函数相对付w的梯度:

相对付x的是:

因此, 我们既可往后向转达一个梯度, 使上一层获得更新并更新层间权重, 以优化丧失, 这就行啦!

下手实践

先来看看代码, 可能直接试试Colab Notebook:

https://colab.research.google.com/github/eisenjulian/slides/blob/master/NN_from_scratch/notebook.ipynb

我们从封装了一个张量及其梯度的类(class)开始。

此刻我们可以建设一个layer类,要害的设法是,在前向撒播时,我们返回这一层的输出和可以接管输出梯度和输入梯度的函数,并在进程中更新权重梯度。

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读