% Matlab实现简单BP神经网络
% http://blog.csdn.net/zjccoder/article/details/40713147
for i=: %样本个数
xx(i)=*pi*(i-)/;
d(i)=0.5*(+cos(xx(i)));
end
n=length(xx);%样本个数
p=; %隐层个数
w=rand(p,);
wk=rand(,p+);
max_epoch=;%最大训练次数
error_goal=0.002;%均方误差
q=0.09;%学习速率
a(p+)=-; %training
%此训练网络采取1--1的形式,即一个输入,6个隐层,1个输出
for epoch=:max_epoch
e=;
for i=:n %样本个数
x=[xx(i);-]; %按照行来连接,初始的输出都是-,向着d(i)=0.5*(+cos(xx(i))) 进行拟合
neto=;
for j=:p
neti(j)=w(j,)*x()+w(j,)*x(); %w(j,)输入层权值
a(j)=/(+exp(-neti(j)));
%隐层的激活函数采取s函数,f(x)=/(+exp(-x))
neto=neto+wk(j)*a(j); % 输出层wk(j)权值
end
neto=neto+wk(p+)*(-); %加上偏置
y(i)=neto; %输出层的激活函数采取线性函数,f(x)=x
de=(/)*(d(i)-y(i))*(d(i)-y(i));
e=de+e;
%反向传播倒数第二层到输出层权值调整的量因为是线性激活函数,不需要求导
%参考http://www.cnblogs.com/daniel-D/archive/2013/06/03/3116278.html
%LMS算法
dwk=q*(d(i)-y(i))*a;
for k=:p
%(d(i)-y(i))*wk(k) 输出层的残差权值分配
%a(k)*(-a(k)为激活函数输出的倒数,
%f(x) = /(+exp(-x)) f'(x) = f(x)(1-f(x)) = a(1-a)
%x是当前层的输出,由于是第一层,输出和输入是相同的
%参考blog.csdn.net/langb2014/article/details/
dw(k,:)=q*(d(i)-y(i))*wk(k)*a(k)*(-a(k))*x;
end
wk=wk+dwk; %从隐层到输出层权值的更新
w=w+dw; %从输入层到隐层的权值的更新
end
error(epoch)=e;
m(epoch)=epoch;
if(e<error_goal)
break;
elseif(epoch==max_epoch)
disp('在目前的迭代次数内不能逼近所给函数,请加大迭代次数')
end
end
%simulation
for i=:n %样本个数
x=[xx(i);-];
neto=;
for j=:p
neti(j)=w(j,)*x()+w(j,)*x();
a(j)=/(+exp(-neti(j)));
neto=neto+wk(j)*a(j);
end
neto=neto+wk(p+)*(-);
y(i)=neto; %线性函数
end %plot
figure()
plot(m,error)
xlabel('迭代次数')
ylabel('均方误差')
title('BP算法的学习曲线')
figure()
plot(xx,d)
hold on
plot(xx,y,'r')
legend('蓝线是目标曲线','红线是逼近曲线')

Matlab 实现神经网络实例的更多相关文章

  1. Matlab与神经网络入门

    第一节.神经网络基本原理  1. 人工神经元( Artificial Neuron )模型  人工神经元是神经网络的基本元素,其原理可以用下图表示: 图1. 人工神经元模型 图中x1~xn是从其他神经 ...

  2. C#中调用Matlab人工神经网络算法实现手写数字识别

    手写数字识别实现 设计技术参数:通过由数字构成的图像,自动实现几个不同数字的识别,设计识别方法,有较高的识别率 关键字:二值化  投影  矩阵  目标定位  Matlab 手写数字图像识别简介: 手写 ...

  3. paper 75:使用MATLAB的神经网络工具箱创建神经网络

    % 生成训练样本集 clear all; clc; P=[110 0.807 240 0.2 15 1 18 2 1.5; 110 2.865 240 0.1 15 2 12 1 2; 110 2.5 ...

  4. DeepLearning.ai学习笔记(四)卷积神经网络 -- week2深度卷积神经网络 实例探究

    一.为什么要进行实例探究? 通过他人的实例可以更好的理解如何构建卷积神经网络,本周课程主要会介绍如下网络 LeNet-5 AlexNet VGG ResNet (有152层) Inception 二. ...

  5. B站上的一个MATLAB与神经网络的视频,捡漏

    ▶ av15514817.这里集中了一些从视频中学到的散点. ▶ 语句 "edit + 函数名" 可以打开部分内置函数的源代码.非公开的源代码这会打开一个全是注释的文档. ▶ 函数 ...

  6. [matlab]bp神经网络工具箱学习笔记

    基本就三个函数: newff():创建一个bp神经网络 train():训练函数 sim():仿真函数 同时具有可视化界面,但目前不知道可视化界面如何进行仿真,且设置不太全 工具箱:Neural ne ...

  7. C++卷积神经网络实例:tiny_cnn代码具体解释(8)——partial_connected_layer层结构类分析(上)

    在之前的博文中我们已经将顶层的网络结构都介绍完毕,包括卷积层.下採样层.全连接层,在这篇博文中主要有两个任务.一是总体贯通一下卷积神经网络在对图像进行卷积处理的整个流程,二是继续我们的类分析.这次须要 ...

  8. [matlab工具箱] 神经网络Neural Net

    //目的是学习在BP神经网络的基础上添加遗传算法,蚁群算法等优化算法来优化网络,这是后话. 先简单了解了MATLAB中的神经网络工具箱,工具箱功能还是非常强大的,已经可以拟合出非常多的曲线来分析了. ...

  9. MATLAB的神经网络工具箱介绍

    一.使用matlab2010b以后的版本会有完整的神经网络工具箱,使用nnstart可以调出toolbox,然后选择需要的功能,导入数据,选择训练参数和每层神经元个数,最后训练会输出网络与结果. 二. ...

随机推荐

  1. Scala数据类型中的Symbol(符号文本)

    1.属于基本类型,被映射成scala.Symbol 2.当两个Symbol值相等时,指向同一个实例 3.Symbol类型存在的意义:作为不可变的字符串,同时不必重复地为相同对象创建实例,节省资源.这类 ...

  2. javascript - = 、==、===、!=、!==、&&、||、!

     = .==.===.!=.!==.&&.||.! /* * = .==.===.!=.!==.&&.||.! */ var a = 1; var b = 1; var ...

  3. Vue中使用节流Lodash throttle

    在Vue中,有时需要对ajax请求提交进行节流操作.这时候,如果页面在请求成功之后会跳转,使用vue指令once或者加载一个loading遮罩禁止点击即可,但如果请求之后不跳转,并且loading不适 ...

  4. JAVA实现zip压缩需要注意的问题

    近来对院社二维码平台进行2.0升级改造.于昨日踩到一个巨坑.特此记录... 需求源于院社编辑在批量下载二维码的时候,系统后台需要对所要下载的二维码进行重命名和zip打包压缩. 系统测试的时候发现:首次 ...

  5. ADBport被占用,adb server is out of date

    wd=adb&tn=44039180_cpr&fenlei=mv6quAkxTZn0IZRqIHckPjm4nH00T1YdPWD1uyP-PHf1ryRYP1Nh0ZwV5Hcvrj ...

  6. Android开发之帐户管理

    android.accounts主要包括了集中式的帐户管理API, AccountManagerCallback, AccountManagerFuture, OnAccountsUpdateList ...

  7. storm trident merger

    import java.util.List; import backtype.storm.Config; import backtype.storm.LocalCluster; import back ...

  8. Java SSL证书的安装

    https正在成为主流,http估计在不久的将来会被彻底放弃…… 一个Java程序需要访问一个https的网站的时候,可能需要涉及证书的安装,卸载等操作. 一.证书的下载 打开浏览器输入https:/ ...

  9. ItelliJ基于Gradle创建及发布Web项目(二)

    上一篇介绍了IteliJ创建WEB项目的过程,这一篇介绍一下和本地WEB服务器(以Tomcat为例)的关联方法和发布流程. WEB服务器的关联 1. 点击IDE右上角的一个带有三角形标识的按钮,如下图 ...

  10. HttpPutFormContentFilter 和 ContextLoaderListener 讲解

    1 ContextLoaderListener 继承自ContextLoader,并且实现ServletContextListener接口. 肯定得实现这个接口了,不然怎么作为Servlet的监听器呢 ...