Matlab训练好的BP神经网络如何保存和读取方法
Matlab训练好的BP神经网络如何保存和读取方法(附实例说明)
看到论坛里很多朋友都在提问如何存储和调用已经训练好的神经网络。
本人前几天也遇到了这样的问题,在论坛中看了大家的回复,虽然都提到了关键的两个函数“save”和“load”,但或多或少都简洁了些,让人摸不着头脑(呵呵,当然也可能是本人太菜)。
通过不断调试,大致弄明白这两个函数对神经网络的存储。
下面附上实例给大家做个说明,希望对跟我有一样问题的朋友有所帮助。
如果只是需要在工作目录下保到当前训练好的网络,可以在命令窗口
输入:save net %net为已训练好的网络
然后在命令窗口
输入:load net %net为已保存的网络
加载net。
但一般我们都会在加载完后对网络进行进一步的操作,建议都放在M文件中进行保存网络和调用网络的操作
如下所示:
%% 以函数的形式训练神经网络
function shenjingwangluo()
P=[-1,-2,3,1;
-1,1,5,-3];
%P为输入矢量
T=[-1,-1,1,1,];
%T为目标矢量
net=newff(minmax(P),[3,1],{'tansig','purelin'},'traingdm')
%创建一个新的前向神经网络
inputWeights=net.IW{1,1}
inputbias=net.b{1}
%当前输入层权值和阀值
layerWeights=net.LW{2,1}
layerbias=net.b{2}
net.trainParam.show=50;
net.trainParam.lr=0.05;
net.trainParam.mc=0.9;
net.trainParam.epochs=1000;
net.trainParam.goal=0.0002;
%调用算法训练BP网络
[net,tr]=train(net,P,T);
%保存训练好的网络在当前工作目录下的aaa 文件中,net为网络名
save('aaa', 'net');
%也可以采用格式“save aaa net;”
%若要保存到指定目录用“'save('d:\aaa.mat', 'net');”这样就保存到指定的目录下了
%%调用网络,以函数的形式
function jiazaiwangluo()
%网络加载,注意文件名要加单引号
load('-mat','aaa');
%从指定目录加载“load('-mat','d:\aaa.mat'); ”
P=[3;4]
A=sim(net,P)%对网络进行仿真
%上面两个函数都已经调试成功,有需要的朋友可以试试看,希望对大家有帮助。
用train训练一个BP神经网络,仿真后,怎么在MATLAB上显示出你训练后的BP神经网
络的各层权值和偏值啊?
我也来说两句查看全部回复
最新回复
chang_bo321 (2009-9-21 15:23:11)
net.IW{1,1}; 输入层到隐层的权值
net.b{1,1}; 输入层到隐层的阈值
net.IW{2,1}; 隐层到输出层的权值
net.b{2,1}; 隐层到输出层的阈值
∙郁磊(2009-9-21 15:43:56)
隐层到输出层应该是net.LW{2,1}
∙joe19852008 (2009-11-17 13:12:44)
顶起3楼!
2 楼小错误可得小心~~
∙njsdxiaoxiao (2009-12-02 18:18:06)
那么如果是两个隐层的情况,权值又是怎么样的?从输入层到第一层隐层,第一隐层到第二隐层,第二隐层到输出层分别是多少?
∙joe19852008 (2009-12-02 20:28:29)
我认为是这样的:
net.IW{1,1}; 输入层到第一层隐层的权值
net.b{1,1}; 输入层到第一层隐层的阈值
net.LW{2,1}; 第一层隐层到第二层隐层的权值
net.b{2,1}; 第一层隐层到第二层隐层的阈值
net.LW{3,2}; 第二层隐层到输出层的权值
net.b{3,2}; 第二层隐层到输出层的阈值
其实没有什么第一层隐层,第二层隐层这样的叫法,我认为是这样称呼:输入层->第一层->第二层->……->输出层。
另外,知道IW表示input weight;LW表示layer weight,那么你想得到哪个权值或阈值就没问题了。
∙hgsz2003 (2009-12-02 21:41:51)
QUOTE:
原帖由joe19852008于2009-12-2 20:28 发表
我认为是这样的:
net.IW{1,1}; 输入层到第一层隐层的权值
net.b{1,1}; 输入层到第一层隐层的阈值
net.LW{2,1}; 第一层隐层到第二层隐层的权值
net.b{2,1}; 第 ...
说的相当精辟呵呵。
∙278534621 (2009-12-03 10:01:53)
顶起来以后多多向大家学习请问有没有做神经网络硬件实现的啊
∙joe19852008 (2009-12-03 13:01:24)
去论坛搜搜看,或发个帖子问问~我想肯定有的,只是我没做过。
∙881016ustc (2010-2-04 15:50:26)
感谢六楼给的代码
∙yersir (2011-3-19 03:00:15)
感觉net.b{3,2}这种写法是错误的,阈值应该是哪一层的,而不是某一层到另一层的含义。
输出层阈值应该是net.b{3,1},可简写成net.b{3}
∙huzhenguo3 (2011-3-20 20:42:41)
学习了,真的很及时。
(完整版)matlab保存图片的四种方法
matlab保存图片的四种方法1 从菜单保存〈<回目录可以保存为fig,eps,jpeg,gif,png,bmp等格式。
2 复制粘贴 <<回目录edit-—-———〉copy figure,再粘贴到其他程序,如word3 saveas函数〈〈回目录saveas(gca,filename,fileformat)不过此函数不好用常常出错4 print函数〈<回目录〉〉 x=—pi:2*pi/300:pi;〉〉 y=sin(x);>〉 plot(x,y);〉> print(gcf,'-dpng','abc。
png')%保存为png格式的图片. 〉〉 pwdD:\Matlab\work>〉 dir〉〉 % 现在到 D:\Matlab\work 应该能找到图片 abc.png 了〉> figure(2) % 新建一个句柄为2的图形窗口。
〉〉 plot(x,cos(x)); % 在句柄为2的图形窗口上画图。
>> grid>> print(2,’—djpeg’,’D:\abc.jpeg’); %将句柄为2的图形保存为jpeg/jpg格式的图片,>> %文件名为'D:\abc。
jpeg’。
4。
2 用法:print(图形句柄,存储格式,文件名);〈<回目录图形句柄,如果图形窗口标题栏是“Figure 3”,则句柄就是3.用gcf可以获取当前窗口句柄. 指定存储格式。
常用的有:png格式:‚-dpng‘ (推荐这一种,与bmp格式一样清晰,文件也不大)jpeg: ‚-djpeg‘(文件小,较清晰)tiff: ‚—dtiff‘bmp: ‚—dbitmap‘(清晰,文件极大)gif: ‚-dgif‘(文件小但不清晰)文件名在matlab中自动保存plot图像的程序Step 1. 先使所画的图最大化,即占满整个屏幕scrsz = get(0,’ScreenSize');figure1=figure('Position',[0 30 scrsz(3) scrsz(4)-95]);或者(下面这种情况会把windows系统下面的任务栏也保存到图片中,不太好)scrsz = get(0,’ScreenSize’);figure1=figure(’Position’,[0 0 scrsz(3) scrsz(4)-66]);% Step 2. 生成数据并画图x=rand(100,1);plot(x);saveas(gcf,’filename’,'bmp’);saveas(gcf,'filename',’emf’);saveas(gcf,'filename’,’jpg');% Step 3. 清理现场clear all; clc; close all;下面的代码可以创建一个大小为整个屏幕的四分之一,位置在屏幕在左上角的一个figure对像,使用root对象的ScreenSize属性来取得屏幕的尺寸,ScreenSize是由四个元素组成的数据:[left,bottom,width,height])。
Bp神经网络的Matlab实现
式, 同一层之 间不存 在相 互连接 , 隐层 可 以有 一层或 多层 . 层与层 之 间有 两种 信号在 流通 : 一种是 工 作信 号 ( 实线 表 示 )它是 施 加输 入信 号 后 用 , 向前传 播直 到在输 出端 产生 实 际输 出的信 号 , 是输 入 和权 值 的 函数 . 另
我们 可 以直观 、 便地进 行分 析 、 算 及仿 真 工作 _ . 经 网络 工 具箱 是 M tb以神 经 网 络 为基 础 , 方 计 2神 j aa l 包含 着 大
量B p网络 的作 用 函数和算 法 函数 , B 为 p网络 的仿 真研 究 提供 了便 利 的工 具 . 运用 神 经 网络 工具 箱 一般 按 照
21年 1 00 0月
湘 南 学 院 学报
J u n lo a g a o ra f Xin n n Umv  ̄i e t y
Oc . 2 0 t . 01 V0 . l No. J3 5
第 3 卷第 5期 1
B p神 经 网络 的 Ma a 现 t b实 l
石 云
一
输 入层
隐 层
输 出层
种是 误差信 号 ( 虚线 表示 )网络实 际输 出与期望 输 出间的差 值 即为 用 ,
图 1 典型 B p网络 模 型
误差 , 由输 出端开 始逐层 向后传 播 . p网络 的学 习过程 程 由前 向计 算 它 B
matlab神经网络工具箱简介和函数及示例
目前,神经网络工具箱中提供的神经网络模型主 要应用于:
函数逼近和模型拟合 信息处理和预测 神经网络控制 故障诊断
神经网络实现的具体操作过程:
• 确定信息表达方式; • 网络模型的确定; • 网络参数的选择; • 训练模式的确定; • 网络测试
• 确定信息表达方式:
将领域问题抽象为适合于网络求解所能接受的 某种数据形式。
函数类型 输入函数
其它
函数名 称
netsum netprcd concur dotprod
函数用途
输入求和函数 输入求积函数 使权值向量和阈值向量的结构一致 权值求积函数
BP网络的神经网络工具箱函数
函数类型
函数名称 函数用途
前向网络创建 函数
传递函数
学习函数
函数类型 性能函数 显示函数
函数名 函数用途 称
三、BP网络学习函数
learngd 该函数为梯度下降权值/阈值学习函数,通过神经 元的输入和误差,以及权值和阈值的学习速率, 来计算权值或阈值的变化率。
调用格式; [dW,ls]=learngd(W,P,Z,N,A,T,E,gW,gA,D,LP,LS)
二、神经元上的传递函数
传递函数是BP网络的重要组成部分,必须是连续可 微的,BP网络常采用S型的对数或正切函数和线性函数。
• Logsig 传递函数为S型的对数函数。 调用格式为: • A=logsig(N)
N:Q个S维的输入列向量; A:函数返回值,位于区间(0,1) 中
② info=logsig(code)
问题形式的种类:
数据样本已知; 数据样本之间相互关系不明确; 输入/输出模式为连续的或者离散的; 输入数据按照模式进行分类,模式可能会 具有平移、旋转或者伸缩等变化形式; 数据样本的预处理; 将数据样本分为训练样本和测试样本
BP神经网络预测的matlab代码
BP神经网络预测的matlab代码附录5:BP神经网络预测的matlab代码: P=[ 00.13860.21970.27730.32190.35840.38920.41590.43940.46050.47960.49700.52780.55450.59910.60890.61820.62710.63560.64380.65160.65920.66640.67350.72220.72750.73270.73780.74270.74750.75220.75680.76130.76570.7700]T=[0.4455 0.323 0.4116 0.3255 0.4486 0.2999 0.4926 0.2249 0.48930.2357 0.4866 0.22490.4819 0.2217 0.4997 0.2269 0.5027 0.217 0.5155 0.1918 0.5058 0.2395 0.4541 0.2408 0.4054 0.2701 0.3942 0.3316 0.2197 0.2963 0.5576 0.1061 0.4956 0.267 0.5126 0.2238 0.5314 0.2083 0.5191 0.208 0.5133 0.18480.5089 0.242 0.4812 0.2129 0.4927 0.287 0.4832 0.2742 0.5969 0.24030.5056 0.2173 0.5364 0.1994 0.5278 0.2015 0.5164 0.2239 0.4489 0.2404 0.4869 0.2963 0.4898 0.1987 0.5075 0.2917 0.4943 0.2902 ]threshold=[0 1]net=newff(threshold,[11,2],{'tansig','logsig'},'trainlm');net.trainParam.epochs=6000net.trainParam.goal=0.01LP.lr=0.1;net=train(net,P',T')P_test=[ 0.77420.77840.78240.78640.79020.7941 ] out=sim(net,P_test')友情提示:以上面0.7742为例0.7742=ln(47+1)/5因为网络输入有一个元素,对应的是测试时间,所以P只有一列,Pi=log(t+1)/10,这样做的目的是使得这些数据的范围处在[0 1]区间之内,但是事实上对于logsin命令而言输入参数是正负区间的任意值,而将输出值限定于0到1之间。
基于BP的数据分类PPT课件(MATLAB优化算法案例分析与应用教程)
图28-1 生物神经元
MATLAB优化算法案例分析与应用
•1 BP神经网络基本原理
BP(Back Propagation)神经网络是一种神经网络学习 算法。其由输入层、中间层、输出层组成的阶层型神经网络 ,中间层可扩展为多层。相邻层之间各神经元进行全连接, 而每层各神经元之间无连接,网络按有教师示教的方式进行 学习,当一对学习模式提供给网络后,各神经元获得网络的 输入响应产生连接权值(Weight)。然后按减小希望输出与 实际输出误差的方向,从输出层经各中间层逐层修正各连接 权,回到输入层。此过程反复交替进行,直至网络的全局误 差趋向给定的极小值,即完成学习的过程。
•3 BP网络的语音信号识别
分类误差
2 1.5
1 0.5
0 -0.5
-1 -1.5
-2 -2.5
-3 0
BP网络分类误差
50 100 150 200 250 300 350 400 450 500
语音信号
图28-4 误差信号
MATLAB优化算法案例分析与应用
•4 BP网络的蝴蝶花分类预测
算法步骤: Step 1,初始化数据,设定各层节点数、学习效率等值; Step 2,输入层FA输入样品,计算出隐层FB活动;
MATLAB优化算法案例分析与应用
•2 BP神经网络算法步骤
neural network training(nntraintool) 的使用说明
neural network training(nntraintool) 的使用说明`nntraintool` 是一个MATLAB 中用于神经网络训练的工具。
它提供了一个交互式界面,可以帮助用户设置和控制训练过程。
以下是使用`nntraintool` 的一般步骤:1. 在MATLAB 中加载数据集并创建神经网络模型。
2. 使用`nntool` 命令打开`nntraintool` 工具:```matlabnntool```3. 在`nntraintool` 界面中,选择要训练的神经网络模型。
如果之前已经在MATLAB 中创建了模型,则可以从下拉菜单中选择该模型。
4. 设置训练参数:-Epochs(迭代次数):设置训练迭代的次数。
每个epoch 表示将所有训练样本都用于训练一次。
- Learning Rate(学习率):控制权重和偏差调整的速度。
较高的学习率可以加快收敛速度,但可能导致不稳定的训练结果;较低的学习率可以增加稳定性,但可能导致收敛速度变慢。
- Momentum(动量):控制权重更新的惯性,有助于跳出局部最小值。
较高的动量可以加速收敛,但可能导致超调现象。
- Validation Checks(验证检查):设置多少个epoch 进行一次验证,用于监控训练过程的性能。
- Performance Goal(性能目标):设置期望的训练误差。
5. 点击"Train" 按钮开始训练。
`nntraintool` 将显示每个epoch 的训练进度和性能曲线。
6. 在训练过程中,你可以使用`nntraintool` 提供的功能来监视训练进度和性能。
例如,你可以查看误差曲线、性能曲线和权重变化。
7. 训练完成后,你可以保存已训练的神经网络模型,以便后续使用。
以上是使用`nntraintool` 的基本步骤。
请注意,在实际使用中,你可能需要根据你的特定问题和数据集进行适当的调整和优化。
此外,MATLAB 官方文档提供了更详细的说明和示例,可以帮助你更深入地了解如何使用`nntraintool` 进行神经网络训练。
Matlab Save 和 Load
Matlab Save和Load我们在使用MATLAB过程中,免不了希望将运算过程中的某些数据「储存」起来,以便下次使用再「读取」利用。
「储存」和「读取」的指令分别是save及load,而save的数据型态又分为:(1)双位元格式(binary format)的MAT-file,(2)ASCII格式的ASCII-file。
MAT-file是以双位元字元储存,可让电脑在读出/入(input/output)速率加快,其格式为test.mat(test为档名),MATLAB将档案的型态预设为MAT-file;而ASCII-file则是以可辨识的字元储存,但会降低电脑在读出/入的速率,其格式为test.dat(test为档名)。
如果你的数据是只在MATLAB中产生及被使用,那最好使用MAT-file。
ASCII-file则必须用在当数据档要为其它不是MATLAB的应用软体读取时。
另外要注意,当save成MAT档是储存变数本身,而非直接储存变数的数据;而save成ASCII 档则是直接储存变数的数值。
这二者储存的差异,造成在读取MAT档和ASCII档的数据有所不同,详见以下的范例。
须注意的是在储存及读取数据时,MAT-file或是ASCII-file的档最好为矩阵型态,否则可能在读取时有困难。
数据储存成矩阵的大小可以为m×n,其中m是列的数目,n则为行的数目。
以下就是几个save,load的使用范例>>x=1:5;y=11:15;%先产生二个列阵列(row array}x,y>>save data1x y%是将x,y二个变数的数值存入data1这个MAT-file,%即data1其实是data1.mat。
data1.mat的内容为变数x,y,而非(1:5,11:15)的数据>>save data2.dat x y-ascii%如果要将data1改以ASCII格式储存,则须加上-ascii%的选项。
Matlab中将数据保存为txt或dat格式四种方案
Matlab中将数据保存为txt或dat格式四种⽅案Matlab中将数据保存为txt或dat格式四种⽅案总结⽹上各种资源,列出以下的四种⽅法(以txt为例)。
第⼀种⽅法:save(最简单基本的)具体的命令是:⽤save *.txt -ascii xx为变量*.txt为⽂件名,该⽂件存储于当前⼯作⽬录下,再打开就可以打开后,数据有可能是以指数形式保存的.例⼦:a =[17 24 1 8 15;23 5 7 14 16 ;4 6 13 20 22 ;10 12 19 21 3 ;11 18 25 2 9 ];save afile.txt -ascii a; %保存⽂本⽂档的⽂件名afile.txt打开之后,是这样的:1.7000000e+0012.4000000e+001 1.0000000e+000 8.0000000e+000 1.5000000e+0012.3000000e+001 5.0000000e+000 7.0000000e+000 1.4000000e+001 1.6000000e+0014.0000000e+000 6.0000000e+000 1.3000000e+001 2.0000000e+001 2.2000000e+0011.0000000e+001 1.2000000e+001 1.9000000e+0012.1000000e+0013.0000000e+0001.1000000e+001 1.8000000e+0012.5000000e+001 2.0000000e+000 9.0000000e+000遇到的问题:Warning: Attempt to write an unsupported data type to an ASCII file.Variable 'names' not written to file第⼆种⽅法:dlmwritedlmwrite('a.txt',a,'precision','%10.0f')或者是dlmwrite('a.txt',a,'delimiter', '\t')对于只有⼀⾏或者⼀列的数据,很适⽤,但是多⾏的,就乱了⽹上有很多这⼀类似的问题,但是都不是很理想第三种⽅法:fopen+fprintf(最常⽤)下⾯主要介绍这种⽅法,由以下的前两种情况最终导出第三种情况可以完美的解决以上问题。
matlab贝叶斯神经网络工具箱的下载安装与使用
matlab贝叶斯神经网络工具箱的下载安装与使用matlab贝叶斯神经网络工具箱的下载安装与使用前言:其实通过Matlab神经网络工具的一些命令组合,可以轻易实现贝叶斯神经网络工具箱的功能,这里所讲的贝叶斯神经网络工具箱是有第三方开放,比较容易使用的贝叶斯神经网络工具箱。
备注(by math):另外一个工具箱PRtools(中文翻译:模式识别工具箱)也可以实现贝叶斯神经网络工具箱的所有功能,而且PRtools 的工具箱功能更强,我会在另外一个帖子里再介绍PRtools模式识别工具箱。
Matlab的Bayes贝叶斯神经网络工具箱是Kevin Murphy开发的,最近一次的更新时间是在2007年,此工具的开发,得到了Intel 员工的协助!一,下载:请直接点此下载,或者点此下载附件FullBNT-1.0.4.zip(2.13MB) 二,安装:解压刚刚下载的zip文件,把你刚才所解压的路径,添加到Matlab的Path里.打开Matlab,在命令行下输入:>>cd C:\Users\JasonZhang\Desktop\FullBNT-1.0.4%设置成你自己的路径>>addpath(genpathKPM(pwd));这时候,你会看到一大推的warning,原因是这个工具箱里的有些函数与MATLAB 自带的函数名字一样,会出现冲突。
我个人的建议是,先记下这些冲突的函数,以后发现程序冲突的时候,可以临时把刚刚添加的path从matlab的path中删除掉。
如果你用到此工具箱,再添加这个路径。
如果想测试添加是否成功,在命令下面输入:>>test_BNT即使有时候出现错误信息也没有关系,通常是由于MATLAB版本更新引起的,有些函数(比如说isfinite)在旧的版本里有,新的版本里就换了,只要看一下MATLAB的更新历史,去把相应的函数换掉即可。
三、使用matlab贝叶斯神经网络工具箱matlab贝叶斯神经网络工具箱有完整的帮助文件,请点击这里阅读,或者下载此文件How to use the Bayes Net Toolbox.pdf(407.53KB)。
matlab神经网络工具箱简介
matlab神经网络工具箱简介MATLAB软件中包含MATLAB神经网络工具箱,工具箱以人工神经网络为基础,只要根据自己需要调用相关函数,就可以完成网络设计、权值初始化、网络训练等,MATLAB神经网络工具箱包括的网络有感知器、线性网络、BP神经网络、径向基网络、自组织网络和回归网络,BP神经网络工具箱主要包括newff,sim和train三个神经网络函数各函数的解释如下:1 newff::::BP神经网络参数设置函数神经网络参数设置函数神经网络参数设置函数神经网络参数设置函数函数功能:构建一个BP神经网络。
函数形式:net = newff(P,T,S,TF,BTF,BLF,PF,IPF,OPF,DDF)P:输入数据矩阵T:输出数据矩阵S:隐含层节点数TF:节点传递函数,包括硬限幅传递函数hardlim,对称硬限幅传递函数hardlims,线性传递函数purelin,正切S型传递函数tansig,对数S型传递函数logsigBTF:训练函数,包括梯度下降BP算法训练函数traingd,动量反传的梯度下降BP算法训练函数traingdm,动态自适应学习率的梯度下降BP算法训练函数traingda,动量反传和动态自适应学习率的梯度下降BP算法训练函数traingdx,Levenberg_Marquardt 的BP算法训练函数trainlmBLF:网络学习函数,包括BP学习规则learngd,带动量项的BP 学习规则learngdmPF:性能分析函数,包括均值绝对误差性能分析函数mae,均方差性能分析函数mse IPF:输入处理函数OPF:输出处理函数DDF:验证数据划分函数一般在使用过程中设置前六个参数,后四个参数采用系统默认参数。
2 train::::BP神经网络训练函数神经网络训练函数神经网络训练函数神经网络训练函数函数功能:用训练数据训练BP神经网络。
函数形式:[net,tr] = train(NET,X,T,Pi,Ai)NET:待训练网络X:输入数据矩阵T:输出数据矩阵Pi:初始化输入层条件Ai:初始化输出层条件net:训练好的网络tr:训练过程记录一般在使用过程中设置前三个参数,后两个参数采用系统默认参数。
