NNLearning阶段性总结01
神经网络最基本的元素与计算流程:
基本的组网原则:
神经网络监督学习的基本步骤:
- 初始化权值系数
- 提取一个样本输入NN,比较网络输出与正确输出的误差
- 调整权值系数,以减少上面误差——调整的方法对应不同的学习规则
- 重复二三步,直到所有的样本遍历完毕或者误差在可以容忍的范围内
Delta规则:(一种更新权值系数的规则)
基于sigmoid函数的Delta规则:优势,便于用于分类问题——激活函数选择
几种常见权值更新策略:
三种更新策略下的代码演示
function W = DeltaSGD(W,X,D)
alpha = 0.9;
N = ;
for i = :N
x = X(i,:)';
d = D(i);
v = W*x;
y = sigmoid(v);
e = d - y;
dy = y*(-y)*e;
dW = alpha*dy*x';
W = dW + W;
end
end
function W = DeltaBatch(W,X,D)
alpha = 0.9;
N = ;
dWSum = zeros(,);
for i = :N
x = X(i,:)';
d = D(i);
v = W*x;
y = sigmoid(v);
e = d - y;
dy = y*(-y)*e;
dW = alpha*dy*x';
dWSum = dWSum + dW;
end
dWavg = dWSum/N;
W = W + dWavg;
end
function W = DeltaMiniBatch(W,X,D)
alpha = 0.9;
N = ;
M = ;
for j = :(N/M)
dWSum = zeros(,);
for q = :M
i = j*(M-) + q;
x = X(i,:)';
d = D(i);
v = W*x;
y = sigmoid(v);
e = d - y;
dy = y*(-y)*e;
dW = alpha*dy*x';
dWSum = dWSum + dW;
end
dWavg = dWSum/M;
W = W + dWavg;
end
end
function y = sigmoid(x)
y = /(+exp(-x));
end
function D = DeltaTest()
clear all;%清除所有变量
close all;%关闭所有打开文件 X = [0 0 1;0 1 1;1 0 1;1 1 1];% 输入样本
D = [0 0 1 1];%对应样本的答案 % 初始化误差平方和向量
E1 = zeros(1000,1);
E2 = zeros(1000,1);
E3 = zeros(1000,1); % 统一初始化权值系数
W1 = 2*rand(1,3) - 1;
W2 = W1;
W3 = W1; % 使用三种方法训练1000轮 同时每一轮计算一次误差平方
for epoch = 1:1000
%各自完成一轮训练
W1 = DeltaSGD(W1,X,D);
W2 = DeltaBatch(W2,X,D);
W3 = DeltaMiniBatch(W3,X,D); % 计算这一轮结束后的误差平方
N= 4;
for i = 1:N
%利用误差计算方法计算误差
% E1
x = X(i,:)';
d = D(i);
v1 = W1*x;
y1 = sigmoid(v1);
E1(epoch) = E1(epoch) + (d - y1)^2; % E2
v2 = W2*x;
y2 = sigmoid(v2);
E2(epoch) = E2(epoch) + (d - y2)^2; % E3
v3 = W3*x;
y3 = sigmoid(v3);
E3(epoch) = E3(epoch) + (d - y3)^2;
end end
for i = 1:4
x = X(i,:)';d = D(i);
v = W1*x;
y = sigmoid(v)
end
% 绘制三种算法策略的差异图
plot(E1,'r');hold on
plot(E2,'b:');
plot(E3,'k-');
xlabel('Epoch');
ylabel('Sum of Squares of Training Error');
legend('SGD',"Batch",'MiniBatch');
end
NNLearning阶段性总结01的更多相关文章
- 01.SQLServer性能优化之----强大的文件组----分盘存储
汇总篇:http://www.cnblogs.com/dunitian/p/4822808.html#tsql 文章内容皆自己的理解,如有不足之处欢迎指正~谢谢 前天有学弟问逆天:“逆天,有没有一种方 ...
- 用Kotlin创建第一个Android项目(KAD 01)
原文标题:Create your first Android project using Kotlin (KAD 01) 作者:Antonio Leiva 时间:Nov 21, 2016 原文链接:h ...
- Java企业实训 - 01 - Java前奏
前言: 虽然个人专攻.NET方向,不过由于个人是干教育行业的,方方面面的东西,不能说都必须精通,但肯定多少都会涉及到. 一个菜鸟学员,从啥都不会,经过一步步学习,最后到企业上手掌管一个模块甚至一个项目 ...
- Node.js 教程 01 - 简介、安装及配置
系列目录: Node.js 教程 01 - 简介.安装及配置 Node.js 教程 02 - 经典的Hello World Node.js 教程 03 - 创建HTTP服务器 Node.js 教程 0 ...
- 0042 MySQL学习笔记-入门--01
基本概念: 数据库DB(database): 数据的仓库,数据的集合,是数据的一种结构化的存储 数据库管理系统DBMS(database management system): 管理数据库的一套软件 ...
- Android快乐贪吃蛇游戏实战项目开发教程-01项目概述与目录
一.项目简介 贪吃蛇是一个很经典的游戏,也很适合用来学习.本教程将和大家一起做一个Android版的贪吃蛇游戏. 我已经将做好的案例上传到了应用宝,无病毒.无广告,大家可以放心下载下来把玩一下.应用宝 ...
- ArtifactTransferException: Failure to transfer org.apache.openejb:javaee-api:jar:5.0-1
最近在myeclipse上创建maven类型的web项目的时候,出现了一个错误. ArtifactTransferException: Failure to transfer org.apache.o ...
- Python学习--01入门
Python学习--01入门 Python是一种解释型.面向对象.动态数据类型的高级程序设计语言.和PHP一样,它是后端开发语言. 如果有C语言.PHP语言.JAVA语言等其中一种语言的基础,学习Py ...
- 异步编程系列第01章 Async异步编程简介
p { display: block; margin: 3px 0 0 0; } --> 2016.10.11补充 三个月过去了,回头来看,我不得不承认这是一系列失败的翻译.过段时间,我将重新翻 ...
随机推荐
- 【转】Java中关于WeakReference和WeakHashMap的理解
新美大的10月11日的笔试中有一道选择题,让选择函数返回结果,代码如下: private static String test(){ String a = new String("a&quo ...
- [Raspberry]001Ubuntu下查看linux版本,内核版本,系统位数,gcc版本
1. 查看linux版本 sunny@ubuntu:~$cat /etc/issueUbuntu 11.04 \n \l 2. 查看内核版本1) sunny@ubuntu:~$ cat /proc/ ...
- 内存修改之IOS版ce
开源工具,算法全部在内存中完成,速度比bmsq,igg快,直接搜索0也是无压力.使用c++编写,有一定的扩展能力,可以自己扩展value type和comparator. 项目地址: https:// ...
- PAT——1003. 我要通过!
“答案正确”是自动判题系统给出的最令人欢喜的回复.本题属于PAT的“答案正确”大派送 —— 只要读入的字符串满足下列条件,系统就输出“答案正确”,否则输出“答案错误”. 得到“答案正确”的条件是: 1 ...
- HDU 1250 Hat's Fibonacci(大数相加)
传送门:http://acm.hdu.edu.cn/showproblem.php?pid=1250 Hat's Fibonacci Time Limit: 2000/1000 MS (Java/Ot ...
- Java参数传递对象引用传递失效
产线问题排查,方法传递对象引用但返回后对象一直为空 原因: null作为参数传递的时候,就不是引用传参了 Java参数引用传递之例外:null 众所周知的是,java中除基本类型外,参数都是引用传递. ...
- unittest单元测试框架之unittest工作原理(一)
1.Unittest 核心组件 test case.test suite.test runner.test fixture 2.unittest 静态图 Testcase:一个 testcase 就是 ...
- hashMap 和 linkedHashMap 的区别和联系
直接举例说明. 运行如下例子程序 mport java.util.HashMap; import java.util.Iterator; import java.util.LinkedHashMap; ...
- 个人开发者即时到账收款方案 BufPay.com
BufPay 个人即时到账支付平台 前言 作为独立开发者,一般只有一个人独立奋战,做出了产品需要收款是非常麻烦的,接入支付宝微信支付都需要公司公户,而注册公司.开公户等一系列操作非常麻烦,成本也很高一 ...
- Linux 只显示目录或者文件方法
ls 参数 -a 表示显示所有文件,包含隐藏文件-d 表示显示目录自身的属性,而不是目录中的内容-F 选项会在显示目录条目时,在目录后加一个/ 只显示目录 方法一: find . -type d -m ...