Deep Learning入门视频(上)_一层/两层神经网络code
关于在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的更多相关文章
- Deep Learning入门视频(下)之关于《感受神经网络》两节中的代码解释
代码1如下: #深度学习入门课程之感受神经网络(上)代码解释: import numpy as np import matplotlib.pyplot as plt #matplotlib是一个库,p ...
- Deep Learning.ai学习笔记_第一门课_神经网络和深度学习
目录 前言 第一周(深度学习引言) 第二周(神经网络的编程基础) 第三周(浅层神经网络) 第四周(深层神经网络) 前言 目标: 掌握神经网络的基本概念, 学习如何建立神经网络(包含一个深度神经网络), ...
- 大牛deep learning入门教程
雷锋网(搜索"雷锋网"公众号关注)按:本文由Zouxy责编,全面介绍了深度学习的发展历史及其在各个领域的应用,并解释了深度学习的基本思想,深度与浅度学习的区别和深度学习与神经网络之 ...
- 课程一(Neural Networks and Deep Learning),第三周(Shallow neural networks)—— 1、两层神经网络的单样本向量化表示与多样本向量化表示
如上图所示的两层神经网络, 单样本向量化: ...
- 基于Deep Learning 的视频识别方法概览
深度学习在最近十来年特别火,几乎是带动AI浪潮的最大贡献者.互联网视频在最近几年也特别火,短视频.视频直播等各种新型UGC模式牢牢抓住了用户的消费心里,成为互联网吸金的又一利器.当这两个火碰在一起,会 ...
- Asp.NET Core2.0 项目实战入门视频课程_完整版
END OR START? 看到这个标题,你开不开心,激不激动呢? 没错,.net core的入门课程已经完毕了.52ABP.School项目从11月19日,第一章视频的试录制,到今天完整版出炉,离不 ...
- Deep Learning.ai学习笔记_第四门课_卷积神经网络
目录 第一周 卷积神经网络基础 第二周 深度卷积网络:实例探究 第三周 目标检测 第四周 特殊应用:人脸识别和神经风格转换 第一周 卷积神经网络基础 垂直边缘检测器,通过卷积计算,可以把多维矩阵进行降 ...
- Deep Learning.ai学习笔记_第三门课_结构化机器学习项目
目录 第一周 机器学习策略(1) 第二周 机器学习策略(2) 目标:学习一些机器学习优化改进策略,使得搭建的学习模型能够朝着最有希望的方向前进. 第一周 机器学习策略(1) 搭建机器学习系统的挑战:尝 ...
- Deep Learning.ai学习笔记_第二门课_改善深层神经网络:超参数调试、正则化以及优化
目录 第一周(深度学习的实践层面) 第二周(优化算法) 第三周(超参数调试.Batch正则化和程序框架) 目标: 如何有效运作神经网络,内容涉及超参数调优,如何构建数据,以及如何确保优化算法快速运行, ...
随机推荐
- Qt——浅谈样式表
优秀的程序,不仅要有严密逻辑,而且应该有美观的外表.从软件界面,便可看出你是否用心在做,是否是一个有思想的人. Qt样式表的术语和语法规则和HTML CSS有很多相似之处. 样式规则 Qt中样式规则由 ...
- Apache Shiro系列四,概述 —— Shiro的架构
Shiro的设计目标就是让应用程序的安全管理更简单.更直观. 软件系统一般是基于用户故事来做设计.也就是我们会基于一个客户如何与这个软件系统交互来设计用户界面和服务接口.比如,你可能会说:“如 ...
- socketAPI:一个最简单的服务器和对应的客户端C语言的实现
基于linux,该实例实现了服务端传了一个hello world给客户端.socket()创建socketbind()绑定socket到IP地址和端口listen()服务器监听客户端的连接connec ...
- IEEE 754 浮点数机器表示标准
32位字长浮点数: 共32位 1 8 23 符号位 解码 尾数 0 + 1 - 移127码 原码,隐含小数点前的首位1 不同数据类型之间转换时,隐藏着一些不容易被察觉的错误,比如int 和 un ...
- 【深入理解计算机系统02】ISA 与内存模型
第二篇:认识ISA(Instruction Set Architecture) 重要概念: [ISA] [IA-32]:Intel把32位x86架构的名称x86-32改称为IA-32,一种身边很常见的 ...
- js鼠标事件大全
一般事件 事件 浏览器支持 描述 onClick HTML: 2 | 3 | 3.2 | 4 Browser: IE3 | N2 | O3 鼠标点击事件,多用在某个对象控制的范围内的鼠标点击 onDb ...
- 【UOJ #246】【UER #7】套路
http://uoj.ac/contest/35/problem/246 神奇!我这辈子是想不出这样的算法了. 对区间长度分类讨论:题解很好的~ 我已经弱到爆了,看完题解后还想了一晚上. 题解中&qu ...
- JS:offsetWidth\offsetleft 等图文解释
网页可见区域宽: document.body.clientWidth;网页可见区域高: document.body.clientHeight;网页可见区域宽: document.body.of ...
- java中的System类
System类代表系统,系统级的很多属性和控制方法都放置在该类的内部.该类位于java.lang包. 由于该类的构造方法是private的,所以无法创建该类的对象,也就是无法实例化该类.其内部的成员变 ...
- Maven+Spring MVC Spring Mybatis配置
环境: Eclipse Neon JDK1.8.0 Tomcat8.0 先决条件: Eclipse先用maven向导创建web工程.参见本站之前随笔. 本机安装完成mysql5:新建用户xuxy03设 ...