关于在51CTO上的深度学习入门课程视频(9)中的code进行解释与总结:

(1)单层神经网络:

#coding:cp936
#建立单层神经网络,训练四个样本,
import numpy as np
def nonlin(x,deriv=False): #deriv为False计算前向传播值,为True时计算反向偏导
if deriv == True:
return x*(1-x)
return 1/(1+np.exp(-x)) X = np.array([[0,0,1],[0,1,1],[1,0,1],[1,1,1]]) #输入样本,四个样本,每个样本三个特征向量
y = np.array([[0,0,1,1]]).T #期望输出
np.random.seed(1)#对这句作用暂时不太了解? w = 2*np.random.random((3,1))-1 #使用高斯变量初始化权值,E(x)=0,D(x)=1,w的值在[-1,+1]之间; for iter in xrange(10000): #迭代一万次
l0 = X #输入给l0
l1 = nonlin(np.dot(l0,w)) #计算经过第一层后的得分函数
l1_error = y-l1 #计算Loss值,相当于损失函数的偏导
l1_grad = l1_error*nonlin(l1,True) #Loss值带入梯度公式计算梯度
w += np.dot(l0.T,l1_grad) #最终的权重梯度
print (l1)

(2)双层神经网络:

#coding:cp936
#两层神经网络
import numpy as np
def nonlin(x,deriv=False): #deriv为False时计算前向传播,为True计算反向偏导,激活函数为sigmoid函数
if deriv == True:
return x*(1-x)
return 1/(1+np.exp(-x)) X=np.array([[0,0,1],[0,1,1],[1,0,1],[1,1,1]]) #输入样本
y = np.array([[0,0,1,1]]).T #期望输出
w0 = 2*np.random.random((3,4))-1 #第一层权重
w1 = 2*np.random.random((4,1))-1 #第二层权重 for iter in xrange(10000): #迭代一万次
l0 = X
l1 = nonlin(np.dot(l0,w0)) #计算第一层后的得分
l2 = nonlin(np.dot(l1,w1)) #经过第二层后的得分
l2_error = y-l2 #计算Loss值,损失函数的偏导
l2_grad = l2_error*nonlin(l2,deriv=True)#第二层梯度,l2_error越大,第二层的梯度也越大
l1_error = l2_grad.dot(w1.T)#l1_error由l2_error迭代进来
l1_grad = l1_error*nonlin(l1,deriv=True)
w1+=l1.T.dot(l2_grad)
w0+=l0.T.dot(l1_grad)
print(l2)

summing up:这里单层网络和双层神经网络的代码中,有几个变量要注意一下;第一个是误差变量,单层网络中是l1_error,其值为y-l1(由于这里的损失函数是二次损失函数,C关于l1的偏导即是y-l1),双层网络中是l1_error和l2_error,分别对应第一层和第二层,而l1_error由l2_error反向传播得到;第二个是梯度变量,单层网络中为l1_grad,双层网络中是l1_grad和l2_grad,注意每层的梯度变量的值都由后面反向传播过来的误差变量和该层的激活函数的导数相乘得到(这里没有将该层的权值放在求梯度的式子中,是为了反向传播中迭代形式的统一性);

Deep Learning入门视频(上)_一层/两层神经网络code的更多相关文章

  1. Deep Learning入门视频(下)之关于《感受神经网络》两节中的代码解释

    代码1如下: #深度学习入门课程之感受神经网络(上)代码解释: import numpy as np import matplotlib.pyplot as plt #matplotlib是一个库,p ...

  2. Deep Learning.ai学习笔记_第一门课_神经网络和深度学习

    目录 前言 第一周(深度学习引言) 第二周(神经网络的编程基础) 第三周(浅层神经网络) 第四周(深层神经网络) 前言 目标: 掌握神经网络的基本概念, 学习如何建立神经网络(包含一个深度神经网络), ...

  3. 大牛deep learning入门教程

    雷锋网(搜索"雷锋网"公众号关注)按:本文由Zouxy责编,全面介绍了深度学习的发展历史及其在各个领域的应用,并解释了深度学习的基本思想,深度与浅度学习的区别和深度学习与神经网络之 ...

  4. 课程一(Neural Networks and Deep Learning),第三周(Shallow neural networks)—— 1、两层神经网络的单样本向量化表示与多样本向量化表示

    如上图所示的两层神经网络, 单样本向量化:                                                                                ...

  5. 基于Deep Learning 的视频识别方法概览

    深度学习在最近十来年特别火,几乎是带动AI浪潮的最大贡献者.互联网视频在最近几年也特别火,短视频.视频直播等各种新型UGC模式牢牢抓住了用户的消费心里,成为互联网吸金的又一利器.当这两个火碰在一起,会 ...

  6. Asp.NET Core2.0 项目实战入门视频课程_完整版

    END OR START? 看到这个标题,你开不开心,激不激动呢? 没错,.net core的入门课程已经完毕了.52ABP.School项目从11月19日,第一章视频的试录制,到今天完整版出炉,离不 ...

  7. Deep Learning.ai学习笔记_第四门课_卷积神经网络

    目录 第一周 卷积神经网络基础 第二周 深度卷积网络:实例探究 第三周 目标检测 第四周 特殊应用:人脸识别和神经风格转换 第一周 卷积神经网络基础 垂直边缘检测器,通过卷积计算,可以把多维矩阵进行降 ...

  8. Deep Learning.ai学习笔记_第三门课_结构化机器学习项目

    目录 第一周 机器学习策略(1) 第二周 机器学习策略(2) 目标:学习一些机器学习优化改进策略,使得搭建的学习模型能够朝着最有希望的方向前进. 第一周 机器学习策略(1) 搭建机器学习系统的挑战:尝 ...

  9. Deep Learning.ai学习笔记_第二门课_改善深层神经网络:超参数调试、正则化以及优化

    目录 第一周(深度学习的实践层面) 第二周(优化算法) 第三周(超参数调试.Batch正则化和程序框架) 目标: 如何有效运作神经网络,内容涉及超参数调优,如何构建数据,以及如何确保优化算法快速运行, ...

随机推荐

  1. css 隔行变色,表单布局

    隔行变色: #list1 li:nth-of-type(odd){ background:#00ccff;}奇数行  #list1 li:nth-of-type(even){ background:# ...

  2. lhgDialog窗口组件

    应用到你的项目 在页面head引入lhgdialog(如果项目采用jQuery作为框架,则引用jQuery的库). <script type="text/javascript" ...

  3. Good Bye 2016 //智商再次下线,边界爆炸.....

    A B很水就略了.. C.又是一次wannafly一样的判断区间的.....  边界设为2000000  正好GG...... fst的时候立马想到上次也是这么wa过的...... 所以下次遇到这种题 ...

  4. Mongodb学习笔记四(Mongodb聚合函数)

    第四章 Mongodb聚合函数 插入 测试数据 ;j<;j++){ for(var i=1;i<3;i++){ var person={ Name:"jack"+i, ...

  5. 基于C/S架构的3D对战网络游戏C++框架 _02系统设计(总体设计、概要设计)

    本系列博客主要是以对战游戏为背景介绍3D对战网络游戏常用的开发技术以及C++高级编程技巧,有了这些知识,就可以开发出中小型游戏项目或3D工业仿真项目. 笔者将分为以下三个部分向大家介绍(每日更新): ...

  6. javascript 中断函数的使用 setInterval()——返回顶部

    方法名称:gotop() 功能描述:点击某个元素,调用方法gotop(),固定间隔,滚动至屏幕顶部 日期 :2016.06.06 16:02 author  :cyh2009@live.com < ...

  7. 剑指offer 面试题65 滑动窗口的最大值

    import java.awt.print.Printable; import java.beans.VetoableChangeListenerProxy; import java.lang.ref ...

  8. C#-WinForm-Treeview-树状模型

    Treeview - 树状模型 利用递归添加数据 数据放入 treeView1.Nodes.Add() 中 public Form3() { InitializeComponent(); TreeNo ...

  9. 搭建spring mvc项目

    在之前搭建maven项目这篇的基础上继续集成,引入spring mvc支持 一.添加jar包引用 修改pom.xml文件,加入:(其他关联的jar包maven会自动引用) <!-- 项目属性 - ...

  10. mysql索引失效

    在做项目的过程中,难免会遇到明明给mysql建立了索引,可是查询还是很缓慢的情况出现,下面我们来具体分析下这种情况出现的原因及解决方法   索引并不是时时都会生效的,比如以下几种情况,将导致索引失效: ...