如何让我的网络更多的表演吗?

1视图(30天)
朱塞佩•D中保
朱塞佩•D中保 2020年12月9日
回答: Prateek拉伊 2021年9月13日
大家好,我是建立一个神经网络预测的无功功率高压/ MV变电站的无功功率。
我开始使用matlab允许我创建的脚本使用机器学习工具来训练神经网络。
我用tansig插入额外的隐层功能,增加了验证检查的价值。
你能给我建议如何改善网络的性能?
认为输入是由一个矩阵的列和70080行,第一列是由季度有功功率值,其余行识别,天,小时,显示星期和索引的类型的一天(节日,放假前或工作日)。
目标由一列70080行与无功功率值。
是否有意义使用隐藏层神经元的数量吗?
还有其他类型的网络,可以帮助我得到更好的结果吗?
我训练算法可以使用什么呢?
%解决一个投入产出时间延迟神经网络时间序列问题
%神经时间序列生成的脚本程序。
% 03 - 12月- 2020 16:01:08创建
%
%这个脚本假设这些变量定义:
%
%输入,输入时间序列。
%目标——目标时间序列。
负载(“输入”);
负载(“目标”);
X = tonndata(输入、假假);
T = tonndata(目标,假,假);
%选择培训功能
%为所有培训功能的列表类型:帮助nntrain
%的trainlm通常是最快的。
%的trainbr花费更长的时间,但是这可能是更好的具有挑战性的问题。
%的trainscg使用更少的内存。在低内存的情况下适用。
trainFcn =“trainlm”;% Levenberg-Marquardt反向传播。
%创建一个延时网络
inputDelays =一24;
hiddenlayer1。大小= 48;
hiddenlayer1。transferfcn =“logsig”;
hiddenlayer2。大小= 24;
hiddenlayer2。transferfcn =“tansig”;
hiddenLayerSize = [hiddenlayer1.size, hiddenlayer2.size];
网= timedelaynet (inputDelays hiddenLayerSize trainFcn);
%选择输入和输出前/后处理功能
%对所有处理功能的列表类型:帮助nnprocess
net.input。processFcns = {“removeconstantrows”,“mapminmax”};
net.output。processFcns = {“removeconstantrows”,“mapminmax”};
%为训练和仿真数据
%的函数PREPARETS准备timeseries数据为一个特定的网络,
%转移最少填满时间的输入状态和层
%。使用PREPARETS可使你保持原始时间序列数据
%不变,而轻松地定制它与不同的网络
%的延迟,与开环或闭环反馈模式。
[x, xi,人工智能,t] = preparets(净,x, t);
%设置部门的数据进行训练、验证测试
%为所有数据部门功能的列表类型:帮助nndivision
网。divideFcn =“dividerand”;%将随机数据
网。divideMode =“时间”;%划分每个样本
net.divideParam。trainRatio = 70/100;
net.divideParam。valRatio = 15/100;
net.divideParam。testRatio = 15/100;
%设置最大失败
net.trainParam。max_fail = 100;
%选择性能函数
%为所有性能函数的列表类型:帮助nnperformance
网。performFcn =mse的;%均方误差
%选择情节功能
%的所有情节功能类型:帮助nnplot
网。plotFcns = {“plotperform”,“plottrainstate”,“ploterrhist”,
“plotregression”,“plotresponse”,“ploterrcorr”,“plotinerrcorr”};
%训练网络
(净,tr) =火车(净,x, t, xi, ai);
%测试网络
净(y = x, xi, ai);
e = gsubtract (t、y);
性能=执行(净、t、y);
%计算训练、验证和测试性能
trainTargets = gmultiply (t, tr.trainMask);
valTargets = gmultiply (t, tr.valMask);
testTargets = gmultiply (t, tr.testMask);
trainPerformance =执行(净trainTargets y);
valPerformance =执行(净valTargets y);
testPerformance =执行(净testTargets y);
%查看网络
视图(净)
%的情节
%取消这些线,使各种各样的情节。
%,plotperform (tr)
%,plottrainstate (tr)
%,ploterrhist (e)
%,plotregression (t, y)
%,plotresponse (t, y)
%,ploterrcorr (e)
%,plotinerrcorr (x, e)
%提前预测网络
%对于某些应用程序有助于早期预测一个步伐。
%原网络收益预测y (t + 1)在同一时间
% x (t + 1)。对于某些应用程序,如决策、
%有助于预测y (t + 1) x (t)是可用的,但是之前
%实际y (t + 1)。网络可以返回它的输出
%步伐早期通过移除一个延迟,使其最小抽头延迟是现在
% 0,而不是1。新的网络返回相同的输出与原始
%网络,但输出左移一个步伐。
网= removedelay(净);
nets.name = [net.name”——预测领先一步”];
视图(网)
[X,切除酶,ais, ts) = preparets(网,X, T);
y =网(xs,切除酶,ais);
stepAheadPerformance =执行(网、t、y);
%的部署
变化百分比(假)值(真),使下面的代码块。
%的更多信息,请参见每一代的帮助功能。
如果(真正的)
%为应用程序生成MATLAB函数神经网络
%部署在MATLAB脚本或MATLAB编译器和生成器
%的工具,或者只是检查计算你的训练有素的神经
%网络执行。
genFunction(净,“myNeuralNetworkFunction”);
y = myNeuralNetworkFunction (x, xi, ai);
结束
如果(假)
%为神经网络代码生成matrix-only MATLAB函数
%与MATLAB编码器工具生成。
genFunction(净,“myNeuralNetworkFunction”,“MatrixOnly”,“是的”);
:x1 = cell2mat (x (1));
ξ1 = cell2mat(ξ(1:));
y = myNeuralNetworkFunction (x1,ξ1);
结束
如果(假)
%为模拟或部署与生成模型图万博1manbetx。
%仿万博1manbetx真软件编码器工具。
gensim(净);
结束

答案(1)

Prateek拉伊
Prateek拉伊 2021年9月13日
我的理解,你想提高你的神经网络的性能。你可以参考以下 回答 我如何提高我的神经网络的性能 可能的解决方案。

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!