关于在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. 微信小程序之生命周期(三)

    [未经作者本人同意,请勿以任何形式转载] 上一篇介绍微信小程序开发工具使用和项目目录结构. 这一章节介绍微信小程序的生命周期,什么是生命周期呢? 通俗的讲,生命周期就是指一个对象的生老病死. 从软件的 ...

  2. 淘宝WAP版小BUG分析

    前几天发现的一个淘宝WAP版的小BUG,就是用桌面版chrome看的时候产品评价中的图片显示不出来,都是图裂了. 这是什么原因呢?图片为什么会显示不出来呢?淘宝的技术人员.测试人员不可能没发现啊.开启 ...

  3. 持续集成(Continuous integration)

    docker +jenkins + gitosc 到gitosc上,复制地址:https://git.oschina.net/99fu/CI.git 进入到 /home/fu   git clone ...

  4. springMVC Aspect AOP 接口耗时统计

    在接口开发中,我们通常需要统计接口耗时,为后续接口性能做统计.在springMVC中可以用它的aop来记录日志. 1.在spring配置文件中开启AOP <!--*************** ...

  5. [转]Hibernate延迟加载与opensessioninviewFilter

    原文地址:http://blog.csdn.net/a19881029/article/details/7916702 hibernate延迟加载: 一个person对应多个school,使用hibe ...

  6. java-工具类-读取配置文件

    java读取配置文件,当发现文件被修改后则重新加载 package com.zg.config; import java.io.File; import java.io.FileInputStream ...

  7. Delphi 实现数字转大写

    从网上找的一段代码 /// <summary> /// 小写转大写 /// </summary> /// <param name="mmje"> ...

  8. BZOJ4650: [Noi2016]优秀的拆分

    考场上没秒的话多拿5分并不划算的样子. 思想其实很简单嘛. 要统计答案,求以每个位置开始和结束的AA串数量就好了.那么枚举AA中A的长度L,每L个字符设一个关键点,这样AA一定经过相邻的两个关键点.计 ...

  9. 我们为什么要学习Java

    有人说Java已死,学Java还有前途吗? 这怎么可能呢? “Java已死”的论断从12年开始就反复有人提,但是直到今天,Java仍然活着,2015年还荣登TIOBE指数的编程语言奖,成为年度冠军.如 ...

  10. Oracle数据库开发

    Oracle数据库开发之PL/SQL基础实战视频课程 1 PL/SQL 简介 2 入门实例(一) 3 入门实例(二) 4 PL/SQL 变量和常量 5 PL/SQL数据类型(一) 6 PL/SQL数据 ...