收藏 分销(赏)

神经网络问题汇总.doc

上传人:s4****5z 文档编号:8794021 上传时间:2025-03-02 格式:DOC 页数:12 大小:104KB
下载 相关 举报
神经网络问题汇总.doc_第1页
第1页 / 共12页
神经网络问题汇总.doc_第2页
第2页 / 共12页
点击查看更多>>
资源描述
1 最近看神经网络的书籍时,看了论坛的一些相关帖子,可是还是有些地方不太明白,感觉很多训练函数参数的解释都是一笔带过,我这个初学者有点难理解, epochs是最大训练次数,能否说也是迭代次数,即重复循环次数。 lr学习率怎么理解呢?特别是它的数字代表的什么意思呢?能否举例说明,谢谢。 min_grad最小梯度要求,针对的是所有函数的梯度?关于梯度这里也有点迷糊,网上把梯度当成导数理解,这样合适吗?还有梯度的计算,为什么要计算梯度呢?这里的梯度指的是所有传递函数的梯度? show显示训练迭代过程,50就代表每隔50次训练,显示一次训练进程,这样理解合适吗?以怎样的方式显示呢?是不是performance每隔50取一个点再连接起来? 问题比较基础,也比较多,因为小弟初学者,还请多多理解。谢谢耐心的你,回答我的问题 1.epochs理解为最大迭代次数是没问题的 2.lr是学习率,这是权值调整过程中用到的一个参数,具体含义还需从权值调整的原理说起 3.梯度和学习率一样,如果对算法原理不了解,很难解释清楚 4.关于show你的理解是正确的 对于梯度下降可以理解为每次权值和阀值的修改量大小,改动太小了,就可以认为网络收敛,可以停止训练了 2 请问:用matlab初始化PSO算法的v、x时,一下这两种方式应该都差不多吗? 1.v=rand(N,D,1)    2. 用for循环赋值:x(i,j)=rand         我在程序中试过最后结果都是N*D的随机矩阵,是不是方法2用for略显繁琐些呢?曾经看过帖子,有人说在matlab下乱用for循环是没有充分利用matlab的矩阵功能,所以我想,是不是在matlab下用1更好些呢? 两种方法是完全一样的,第一种没有用循环,所以效果更好点,用循环会增加程序的运行时间 3 请教个问,要得急下图是两类样本,红色的是一类,蓝色的是一类,这样的样本能用吗? 楼主能具体解释下数据不,神经网络预测的精确与否与数据有比较大的关系,简单来说,就是输入数据和输出数据存在关联性,因为网络本身可以看成是一个函数的 4 发表于 2009-11-6 09:07:31 |只看该作者 |倒序浏览 您好史老师,我以前用的是工具箱中newff,train,sim。样本就是这些,训练精度达人满意的效果。现在自已写程序能否达到这个效果?我的样本是实际测量得出的。而且样本的数目根据实际情况已经不可能再增加.谢谢 中午回去给你试下,不过你的数据里面只有训练数据了,没有测试数据了,一般工具箱函数精度高很多,我自己做的BP程序也存在预测效果稍差的问题 楼主的问题解决了,应该是加上阀值,不是减阀值,正好反了,另外,建议楼主把输入数据归一化,输出归一不归一无所谓 5 L=[1 2 3 4;5 6 7 8;9 10 11 12] L =      1     2     3     4      5     6     7     8      9    10    11    12 >> std=corrcoef(L)%相关系数 std =      1     1     1     1      1     1     1     1      1     1     1     1      1     1     1     1 >> covL=cov(L)%协方差 covL =     16    16    16    16     16    16    16    16     16    16    16    16     16    16    16    16 [ 本帖最后由 niuniuyun 于 2009-10-26 17:27 编辑 ] 6很多自变量,一个因变量,如何用神经网络进行变量选择,找出和因变量最相关的几个自变量?  用哪些神经网络好呢? 原帖由 史峰 于 2009-10-15 17:32 发表 你好,BP和RBF等都应该可以,各种网络间差异应该不是很大,楼主的问题的具体是怎样的呢,能详细描述一下吗,比如数据的输入输出,训练集等等 一共有644个自变量,一个因变量。要在这644个自变量中选择和因变量最相关的。问题就是这样。 pca好像能做。神经网络也可以,可是不知道如何下手。 这个得具体问题具体分析,大体的思路是将所有自变量进行分组,所有分组的组合构成搜索空间,利用遗传算法找到最优的分组组合,对应的自变量就是筛选出来的输入变量 7 for i=1:nRept         net = newff(p_z,t_z,n,{'tansig','purelin'},'traingdx');     %net = newff(minmax(p_z),[n,1],{'tansig','purelin'},'traingdx');     % 初始化网络     %网络设置   net.layers{1}.initFcn = 'initnw';     net.inputWeights{1,1}.initFcn = 'rands';     net.biases{1,1}.initFcn = 'rands';     net = init(net);     % 训练网络   net.trainParam.show=100;     net.trainParam.mc=0.3;     net.trainParam.epochs=2000;     net.trainParam.goal=1e-5;     [net,tr]=train(net,p_z,t_z);     %调用TRAINGDX算法训练BP网络     %对BP网络进行仿真   temp=sim(net,p_sim_z);     re = mapminmax('reverse',temp,TS);     sum=re;     %echo off end; 例子如上,请问如何保存所有神经网络模型,好做为以后预测用? 采用元胞数组,比如训练好一个网络net,设定一个元胞数组a=cell(1,5),a{1}=net,用该网络预测用sim(a{1},-)就可以 8 用PSO优化BP网络似乎效果比单纯用BP也没有太大改观啊 ,不知道大家仿真后效果如何?有的时候好像还不如bp训练的效果呀,该怎么调整呢? 我的数据是4×74的矩阵,(74个采样时间),输出是1×74的量,网络结构是4-5-1、40/60/80个粒子都试过了 200次左右的迭代。是不是样本少了呀?,单独用BP时一开始用的是37个采样时间的数值,拟合不是很好,后来又选了些数据,到74个采样点是,效果就很好了,同样的数据,用PSO优化该网络后的效果反而不怎么样了,还需要注意什么问题吗?谢谢诸位! 是数据比较少,所以网络本身没有学习充分,加上优化方法后,虽然训练精确了,但是等于过拟合了,预测效果反而更差,楼主可以多找点数据,并且这个问题不少文献都有问题的 9 您好,各位老师:        我用GUI进行神经网络的编写,以前一直用的是神经网络工具箱中的newff,train,sim函数。这次在GUI里也是用 这几个。在未编译前运行正常。可是编译成exe后,却不可以用了。怎么解决?盼指教! 神经网络工具箱不可用于exe文件,的确需要用的话需要自己神经网络程序 10 已答复] 问题——Matlab的神经网络预测误差比较大,该怎样调整 各位前辈:        你们好!        我刚刚接触神经网络不久,在用BP网络和RBF网络来进行预测时,得到的结果误差比较大。BP网络,我也调整了很多次隐层单元个数和训练的次数,可是总是无法得到较为精确地结果;RBF我也调整了很多SPREAD值,结果也很不理想!如果不是数据的原因,我想知道我的程序有哪些不足之处和需要改进的地方!希望各位前辈能帮我修改一下,并帮我指出一下。我在此表示真诚的感谢!代码我一起发过去!         还有一个问题,因为网络每次训练的结果不一样,我想把其中的一次保存起来,下次训练时得到相同的结果,我应该怎么办?(我用过save filename net 和load filename net,可不知道该放在程序什么位置)         非常期待各位的回音!谢谢大家了! 不好意思,我不应该添加附件的,让大家花M币 BP代码:clc; clear; close all; %输入样本数据,前十组用来作训样本练,后面四组用来预测 p=[ 308.5 449.9 1104.6 870.4 25.7; 68 70 330.2 58.5 19.4; 133.3 216.4 1572.5 1311.6 25.9; 151.8 215.2 1155.5 859.4 24.1; 69.8 82.1 517.5 107.9 18; 82.8 171.6 1102.4 780.7 27.6; 139.8 199 802.1 478.1 25.7; 61.7 99.1 541.3 102.9 19.7; 266.6 310.8 1850.2 1588.1 27; 98 111.7 968.6 739.8 26.1; 157.5 281.1 911.9 415.6 20.2; 119.8 268.9 1593.3 1291.3 28; 28.1 44.5 618.9 367.9 27.4; 321 494.7 1364.1  1062.8 27.9 ]'; %目标向量 t=[12.14    5.48;     6.8     11.58;     7.45    8.29;     7.3     2.17;     2.35    3.02;     2.25    0.29;     5.26    3.9;     3.37    1.7;     30.64   27.25;     10.11   7.52;     2.79 2.2     7.78 4.74     1.57 0.54    13.25 6.58 ]'; %输入向量归一 for i=1:5     P(i,:)=(p(i,:)-min(p(i,:)))/(max(p(i,:))-min(p(i,:))); end %目标向量归一 for i=1:2     T(i,:)=(t(i,:)-min(t(i,:)))/(max(t(i,:))-min(t(i,:))); end %学习样本 P_train=[P(:,1) P(:,2) P(:,3) P(:,4) P(:,5) P(:,6) P(:,7) P(:,8) P(:,9) P(:,10)]; T_train=[T(:,1) T(:,2) T(:,3) T(:,4) T(:,5) T(:,6) T(:,7) T(:,8) T(:,9) T(:,10)]; %测试样本 P_test=[P(:,11) P(:,12) P(:,13) P(:,14) ]; T_test=[T(:,11) T(:,12) T(:,13) T(:,14) ];   %隐层单元个数向量为15     net=newff(minmax(P),[15,2],{'tansig','logsig'});     net.trainParam.epochs=500;     net=init(net);     net=train(net,P_train,T_train);     Temp=sim(net,P_test);        y(1,:)=Temp(1,:);     y(2,:)=Temp(2,:);     Y1=[y(1,:);y(2,:)]; %求预测误差,画出误差曲线 for i=1:4     error1(i)=norm(Y1(:,i)-T_test(:,i)); end figure; plot(1:4,error1); hold off; for i=1:2 %反归一化 TT(i,:)=Temp(i,:)*(max(t(i,:))-min(t(i,:)))+min(t(i,:)); end for i=1:2 T2(i,:)=T(i,:)*(max(t(i,:))-min(t(i,:)))+min(t(i,:)); end RBF代码: clc; clear; close all; %输入样本数据,前十组用来作训样本练,后面四组用来预测 p=[ 308.5 449.9 1104.6 870.4 25.7; 68 70 330.2 58.5 19.4; 133.3 216.4 1572.5 1311.6 25.9; 151.8 215.2 1155.5 859.4 24.1; 69.8 82.1 517.5 107.9 18; 82.8 171.6 1102.4 780.7 27.6; 139.8 199 802.1 478.1 25.7; 61.7 99.1 541.3 102.9 19.7; 266.6 310.8 1850.2 1588.1 27; 98 111.7 968.6 739.8 26.1; 157.5 281.1 911.9 415.6 20.2; 119.8 268.9 1593.3 1291.3 28; 28.1 44.5 618.9 367.9 27.4; 321 494.7 1364.1  1062.8 27.9 ]'; %目标向量 t=[12.14    5.48;     6.8     11.58;     7.45    8.29;     7.3     2.17;     2.35    3.02;     2.25    0.29;     5.26    3.9;     3.37    1.7;     30.64   27.25;     10.11   7.52;     2.79 2.2     7.78 4.74     1.57 0.54    13.25 6.58 ]'; %归一化的输入向量 for i=1:5     P(i,:)=(p(i,:)-min(p(i,:)))/(max(p(i,:))-min(p(i,:))); end for i=1:2     T(i,:)=(t(i,:)-min(t(i,:)))/(max(t(i,:))-min(t(i,:))); end %学习样本 P_train=[P(:,1) P(:,2) P(:,3) P(:,4) P(:,5) P(:,6) P(:,7) P(:,8) P(:,9) P(:,10)]; T_train=[T(:,1) T(:,2) T(:,3) T(:,4) T(:,5) T(:,6) T(:,7) T(:,8) T(:,9) T(:,10)]; %测试样本 P_test=[P(:,11) P(:,12) P(:,13) P(:,14) ]; T_test=[T(:,11) T(:,12) T(:,13) T(:,14) ];   %建立网络     net=newrbe(P_train,T_train,1);     temp=sim(net,P_test);     y(1,:)=temp(1,:);     y(2,:)=temp(2,:);     Y1=[y(1,:);y(2,:)];     temp=sim(net,P_test) %求预测误差 for i=1:4     error1(i)=norm(Y1(:,i)-T_test(:,i)); end figure; plot(1:4,error1,'--'); hold on; 史峰 程序没问题,数据太少了,需要保存网络用save net就可以,下次需要使用用load net,然后用sim(net) save net 放在程序快结尾的地方,load net放在下次要调用该保存过的网络时,程序开始的地方,你可以选很多次训练下来,结果好的那个网络拟合其他数据,呵呵,很好用的!象前面几位老师说的,你的数据是太少了。 一般来说目标向量就是你用神经网络的目的。预测的话是预测目标值;评估的话就是评估结果,分类是分类结果,要看你要干什么。目标向量的维数看你需要几个结果,如果他们可以用一个网络仿真的话就归于一个也没问题,一般用一个输出比较好,免得几个的输入影响不同时造成困难。 我是搞预测的,有问题共同交流:victory: 11我现在的数据y和x都是离散点的矩阵,想实现y对x的导数。可用diff(y)实现却出错了。比如如下程序要实现y对x的导数该如何实现 clc clear y=[1 2 3 4 5 4 3 2 1 2       1.1 2.2 3.5 4.2 5.1 4.2 3.3 2.1 2.4 2.1]; x=[0.1:0.1:1]; figure(1) plot(x,y) diff(y) 我看过polyder是利用的多项式的系数进行求导的。我现在这个不是多项目式,我认为是不能用polyder进行求的。 clc clear y=[1 2 3 4 5 4 3 2 1 2;    1.1 2.2 3.5 4.2 5.1 4.2 3.3 2.1 2.4 2.1]; x=[0.1:0.1:1]; figure(1) plot(x,y) y1=[]; for i=1:2     y1=[y1;diff(y(i,:))]; end figure(2) plot(x,y1,'*') 我这样运行后怎么Y1变成了2行9列的矩阵了。我是一个2行10列的呀 那位高手帮我看看。 当然是2行9列的矩阵。 help diff中写得很清楚: Y = diff(X) calculates differences between adjacent elements of X. If X is a vector, then diff(X) returns a vector, one element shorter than X, of differences between adjacent elements: [X(2)-X(1) X(3)-X(2) ... X(n)-X(n-1)] If X is a matrix, then diff(X) returns a matrix of row differences: [X(2:m,:)-X(1:m-1,:)] 12老师好!        我在自己的一个仿真试验中(基于matlab/sinmulink),运用到神经网络,这是一个用matlab训练好的一个bp,神经网络模块(如附件图中)是用gensim函数生成的。        我把自己的问题简单的用附件上的图形说明了一下。 在图中输入信号的范围并不是[-1 1]之间,所以我想,在输入给神经网络模块的之前应该进行归一化处理,同样的神经网络的输出也应该进行反归一化处理吧?可是这个归一化和反归一化模块应该如何建立呢?        麻烦老师给我详细的解答一下,谢谢了! 用s函数来写,如果网络训练是事先训练好地话,首先是如果训练数据归一化处理了,那么预测数据肯定也需要归一化处理,如果训练数据没有归一化处理,那么测试数据不需要归一化处理。 测试数据归一化时需要知道训练数据归一化地信息,比如下面,input_train和output_train是训练数据,input_test和output_test是测试数据,网络是net %选连样本输入输出数据归一化 [inputn,inputps]=mapminmax(input_train); [outputn,outputps]=mapminmax(output_train); %% BP网络预测 %预测数据归一化 inputn_test=mapminmax('apply',input_test,inputps); %网络预测输出 an=sim(net,inputn_test); %网络输出反归一化 BPoutput=mapminmax('reverse',an,outputps); 这样就可以了,并且你这个S函数也比较简单,没有状态量,直接输出就可以了,具体地查下相关地S函数编写方法 13 已答复] Matlab怎样解释这种仿真的合理性 [复制链接] 不好意思,老问题了,各位大哥勿怪啊。 我曾经把用整个时间段的电流来仿真这个想法跟师兄们说过,他们对神经网络不太理解,但是对于随机取一部分值,一部分用来训练,另外一部分用来仿真,他们比较认同这个预测结果,如果想我刚才提出那种仿真,即全部输入量作为仿真对象,他们就不同意了,始终认为说服力不够,好比提前把答案看了一下再去做原题,即使原题里面有小部分新题(即未参与训练的数据),但是大体结果不会改变,因为训练的数据占整个数据的大部分。不知道我的这种描述容易理解么?他们当时就是提出这个疑问,我不知道如何用专业的神经网络知识来打消他们的这种疑问,史大哥能否对这种质疑给出专家回答呢?呵呵,麻烦你了。 [ 本帖最后由 李洋 于 2009-12-13 23:29 编辑 ] 答:恩,你同学说的是有道理的,其实前面几个问题我看已经预测的挺不错了,比如对于预测精度,结果已经比较好了,但是看误差百分比的话非常小的。增加训练样本的目的就是为了能够使网络能够更加精确拟合,不过网络不是万能的,拟合能力也是有限度的,所以很多复杂的问题用网络拟合效果也不是很好。 14 [已答复] 训练BP网络时候,带有验证集的情况怎么写呢? [复制链接] %注意要把Current Directory调到放tr  ts的目录!!!! clc clear all %加载训练集测试集 load tr.txt; load ts.txt; traindata=tr; testdata=ts; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % traindata=load ('c:\tr.txt'); % testdata=load('c:\ts.txt'); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %转置后复制给新矩阵 train_input=traindata(:,1:4)'; train_output=traindata(:,5)';   P=train_input;   T=train_output;   %归一话矩阵   [inputn,mininput,maxinput,outputn,minoutput,maxoutput]=premnmx(P,T);   %建立网络    net_1=newff(minmax(inputn),[9,1],{'tansig','purelin'},'traingdm')    inputWeights=net_1.IW{1,1}    inputbias=net_1.b{1}    layerWeights=net_1.LW{2,1}    layerbias=net_1.b{2}    net_1.trainParam.show=50;    net_1.trainParam.lr=0.050;    net_1.trainParam.mc=0.9;    net_1.trainParam.epochs=10000;    net_1.trainParam.goal=1e-3;    %训练网络    [net_1,tr]=train(net_1,inputn,outputn,test_inputn,test_output);        %预测 训练集 输出    train_simu=sim(net_ 如何选取测试数据集? 分为三种样本:50%的训练集、25%验证集和25%测试集。其中, a.训练集:估计模型; b.验证集:确定网络结构或者控制模型复杂度的参数; c.测试集:检验最终选择的模型性能如何。 就是这样的 b.验证集:确定网络结构或者控制模型复杂度的参数; 要是加上交叉验证就更好了。 用dividerand就可以了 [已答复] Matlab问题:样本需要有什么特点 [复制链接] 楼主能具体解释下数据不,神经网络预测的精确与否与数据有比较大的关系,简单来说,就是输入数据和输出数据存在关联性,因为网络本身可以看成是一个函数的
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服