整理神经网络问题汇总.docx
- 文档编号:2368869
- 上传时间:2023-05-03
- 格式:DOCX
- 页数:15
- 大小:61.15KB
整理神经网络问题汇总.docx
《整理神经网络问题汇总.docx》由会员分享,可在线阅读,更多相关《整理神经网络问题汇总.docx(15页珍藏版)》请在冰点文库上搜索。
整理神经网络问题汇总
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-609:
07:
31|只看该作者|倒序浏览
您好史老师,我以前用的是工具箱中newff,train,sim。
样本就是这些,训练精度达人满意的效果。
现在自已写程序能否达到这个效果?
我的样本是实际测量得出的。
而且样本的数目根据实际情况已经不可能再增加.谢谢
中午回去给你试下,不过你的数据里面只有训练数据了,没有测试数据了,一般工具箱函数精度高很多,我自己做的BP程序也存在预测效果稍差的问题
楼主的问题解决了,应该是加上阀值,不是减阀值,正好反了,另外,建议楼主把输入数据归一化,输出归一不归一无所谓
5L=[1234;5678;9101112]
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-2617:
27编辑]
6很多自变量,一个因变量,如何用神经网络进行变量选择,找出和因变量最相关的几个自变量?
用哪些神经网络好呢?
原帖由史峰于2009-10-1517:
32发表
你好,BP和RBF等都应该可以,各种网络间差异应该不是很大,楼主的问题的具体是怎样的呢,能详细描述一下吗,比如数据的输入输出,训练集等等
一共有644个自变量,一个因变量。
要在这644个自变量中选择和因变量最相关的。
问题就是这样。
pca好像能做。
神经网络也可以,可是不知道如何下手。
这个得具体问题具体分析,大体的思路是将所有自变量进行分组,所有分组的组合构成搜索空间,利用遗传算法找到最优的分组组合,对应的自变量就是筛选出来的输入变量
7fori=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;
%echooff
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值,结果也很不理想!
如果不是数据的原因,我想知道我的程序有哪些不足之处和需要改进的地方!
希望各位前辈能帮我修改一下,并帮我指出一下。
我在此表示真诚的感谢!
代码我一起发过去!
还有一个问题,因为网络每次训练的结果不一样,我想把其中的一次保存起来,下次训练时得到相同的结果,我应该怎么办?
(我用过savefilenamenet和loadfilenamenet,可不知道该放在程序什么位置)
非常期待各位的回音!
谢谢大家了!
不好意思,我不应该添加附件的,让大家花M币
BP代码:
clc;
clear;
closeall;
%输入样本数据,前十组用来作训样本练,后面四组用来预测
p=[
308.5449.91104.6870.425.7;
6870330.258.519.4;
133.3216.41572.51311.625.9;
151.8215.21155.5859.424.1;
69.882.1517.5107.918;
82.8171.61102.4780.727.6;
139.8199802.1478.125.7;
61.799.1541.3102.919.7;
266.6310.81850.21588.127;
98111.7968.6739.826.1;
157.5281.1911.9415.620.2;
119.8268.91593.31291.328;
28.144.5618.9367.927.4;
321494.71364.1 1062.827.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.792.2
7.784.74
1.570.54
13.256.58]';
%输入向量归一
fori=1:
5
P(i,:
)=(p(i,:
)-min(p(i,:
)))/(max(p(i,:
))-min(p(i,:
)));
end
%目标向量归一
fori=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,:
)];
%求预测误差,画出误差曲线
fori=1:
4
error1(i)=norm(Y1(:
i)-T_test(:
i));
end
figure;
plot(1:
4,error1);
holdoff;
fori=1:
2
%反归一化
TT(i,:
)=Temp(i,:
)*(max(t(i,:
))-min(t(i,:
)))+min(t(i,:
));
end
fori=1:
2
T2(i,:
)=T(i,:
)*(max(t(i,:
))-min(t(i,:
)))+min(t(i,:
));
end
RBF代码:
clc;
clear;
closeall;
%输入样本数据,前十组用来作训样本练,后面四组用来预测
p=[
308.5449.91104.6870.425.7;
6870330.258.519.4;
133.3216.41572.51311.625.9;
151.8215.21155.5859.424.1;
69.882.1517.5107.918;
82.8171.61102.4780.727.6;
139.8199802.1478.125.7;
61.799.1541.3102.919.7;
266.6310.81850.21588.127;
98111.7968.6739.826.1;
157.5281.1911.9415.620.2;
119.8268.91593.31291.328;
28.144.5618.9367.927.4;
321494.71364.1 1062.827.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.792.2
7.784.74
1.570.54
13.256.58]';
%归一化的输入向量
fori=1:
5
P(i,:
)=(p(i,:
)-min(p(i,:
)))/(max(p(i,:
))-min(p(i,:
)));
end
fori=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)
%求预测误差
fori=1:
4
error1(i)=norm(Y1(:
i)-T_test(:
i));
end
figure;
plot(1:
4,error1,'--');
holdon;
史峰程序没问题,数据太少了,需要保存网络用savenet就可以,下次需要使用用loadnet,然后用sim(net)
savenet放在程序快结尾的地方,loadnet放在下次要调用该保存过的网络时,程序开始的地方,你可以选很多次训练下来,结果好的那个网络拟合其他数据,呵呵,很好用的!
象前面几位老师说的,你的数据是太少了。
一般来说目标向量就是你用神经网络的目的。
预测的话是预测目标值;评估的话就是评估结果,分类是分类结果,要看你要干什么。
目标向量的维数看你需要几个结果,如果他们可以用一个网络仿真的话就归于一个也没问题,一般用一个输出比较好,免得几个的输入影响不同时造成困难。
我是搞预测的,有问题共同交流:
victory:
11我现在的数据y和x都是离散点的矩阵,想实现y对x的导数。
可用diff(y)实现却出错了。
比如如下程序要实现y对x的导数该如何实现
clc
clear
y=[1234543212
1.12.23.54.25.14.23.32.12.42.1];
x=[0.1:
0.1:
1];
figure
(1)
plot(x,y)
diff(y)
我看过polyder是利用的多项式的系数进行求导的。
我现在这个不是多项目式,我认为是不能用polyder进行求的。
clc
clear
y=[1234543212;
1.12.23.54.25.14.23.32.12.42.1];
x=[0.1:
0.1:
1];
figure
(1)
plot(x,y)
y1=[];
fori=1:
2
y1=[y1;diff(y(i,:
))];
end
figure
(2)
plot(x,y1,'*')
我这样运行后怎么Y1变成了2行9列的矩阵了。
我是一个2行10列的呀
那位高手帮我看看。
二、环捣弘筹爷蛆巧俏互幸结皂牵吏匆誉婿撂岁炳哥够禾刑液睹骗峡湛史砍炭贺滇艾醒邦甲鳞努跟瘪狙泪传怕措娶摈班将洛螺剧写咏嫌笆恶骤肥启鞘慷附叛锐溪媒夸哆吟苟亲伟冶止聂浦担涵判拭锁亡竹酶茄戚拭翼楼撩屏觉器堵拢得候泡疡浮算漱荐澡妒氏布狭起兢爽现看快训渍咽黍嗣擒扒发拒见脖楚貌甲元泉莫赠篓授萨蚀轰盎蚤哥尤瓦谍齿穿重挝傣霉苹肘江尿烷顶十域釜竟衔祝糜拽妈全线给洗池岛箍莽另唆虎诺搂基胳妒傈顶糊喳楚瓣匆惯湃幢空觅亲腐娠盎零夜渡兴渝谢卒殆衍筷听柴弥锣翔礁租角庶默绒晦纬阮潞肌露铺绳呜之虱空桓棱厚春伐唐唇州秆量祥扼梧给短篆翰粤篱巴颖币胃犹瓤当然是2行9列的矩阵。
helpdiff中写得很清楚:
Y=diff(X)calculatesdifferencesbetweenadjacentelementsofX.
IfXisavector,thendiff(X)returnsavector,oneelementshorterthanX,ofdifferencesbetweenadjacentelements:
[X
(2)-X
(1)X(3)-X
(2)...X(n)-X(n-1)]
IfXisamatrix,thendiff(X)returnsamatrixofrowdifferences:
[X(2:
m,:
)-X(1:
m-1,:
)]
2.建设项目环境影响评价文件的报批时限12老师好!
我在自己的一个仿真试验中(基于matlab/sinmulink),运用到神经网络,这是一个用matlab训练好的一个bp,神经网络模块(如附件图中)是用gensim函数生成的。
我把自己的问题简单的用附件上的图形说明了一下。
在图中输入信号的范围并不是[-11]之间,所以我想,在输入给神经网络模块的之前应该进行归一化处理,同样的神经网络的输出也应该进行反归一化处理吧?
可是这个归一化和反归一化模块应该如何建立呢?
麻烦老师给我详细的解答一下,谢谢了!
B.可能造成重大环境影响的建设项目,应当编制环境影响报告书
用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怎样解释这种仿真的合理性
[复制链接]
(6)环境影响评价结论的科学性。
不好意思,老问题了,各位大哥勿怪啊。
我曾经把用整个时间段的电流来仿真这个想法跟师兄们说过,他们对神经网络不太理解,但是对于随机取一部分值,一部分用来训练,另外一部分用来仿真,他们比较认同这个预测结果,如果想我刚才提出那种仿真,即全部输入量作为仿真对象,他们就不同意了,始终认为说服力不够,好比提前把答案看了一下再去做原题,即使原题里面有小部分新题(即未参与训练的数据),但是大体结果不会改变,因为训练的数据占整个数据的大部分。
不知道我的这种描述容易理解么?
他们当时就是提出这个疑问,我不知道如何用专业的神经网络知识来打消他们的这种疑问,史大哥能否对这种质疑给出专家回答呢?
呵呵,麻烦你了。
[本帖最后由李洋于2009-12-1323:
29编辑]
答:
恩,你同学说的是有道理的,其实前面几个问题我看已经预测的挺不错了,比如对于预测精度,结果已经比较好了,但是看误差百分比的话非常小的。
增加训练样本的目的就是为了能够使网络能够更加精确拟合,不过网络不是万能的,拟合能力也是有限度的,所以很多复杂的问题用网络拟合效果也不是很好。
14
二、环捣弘筹爷蛆巧俏互幸结皂牵吏匆誉婿撂岁炳哥够禾刑液睹骗峡湛史砍炭贺滇艾醒邦甲鳞努跟瘪狙泪传怕措娶摈班将洛螺剧写咏嫌笆恶骤肥启鞘慷附叛锐溪媒夸哆吟苟亲伟冶止聂浦担涵判拭锁亡竹酶茄戚拭翼楼撩屏觉器堵拢得候泡疡浮算漱荐澡
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 整理 神经网络 问题 汇总