法律状态公告日
法律状态信息
法律状态
2017-12-22
授权
授权
2015-04-08
实质审查的生效 IPC(主分类):G06F11/36 申请日:20141121
实质审查的生效
2015-03-11
公开
公开
技术领域
本发明涉及一种基于改进神经网络的嵌入式软件能耗测试方法,属于嵌入式技术领域。
背景技术
嵌入式软件能耗是当前嵌入式领域研究的热点问题之一,为了优化软件能耗,已经出现 了很多测试和优化的方法。通常基于指令层分析或者算法和软件体系结构层中进行能耗分析。
然而通过神经网络训练进行的能耗测试,人们只是用传统的神经网络模型训练软件中的 特征量,但这些特征量不能很准确的分析软件能耗,只是从某一方面进行了嵌入式软件能耗 的分析与研究。一种改进神经网络的嵌入式软件能耗测试方法,分析嵌入式软件程序中的节 点关系图,通过改进神经网络模型,优化节点的聚类关系、出入度,改善代码的复用率,实 现嵌入式软件能耗优化。
发明内容
本发明提供了一种基于改进神经网络的嵌入式软件能耗测试方法及其安装方法,通过分 析嵌入式软件程序中的节点关系图,得出各个节点的聚类关系、聚类关系平均值、出度、入 度值,改进神经网络模型且在MATLAB中进行数据训练,优化节点的聚类关系、聚类关系平 均值、出入度,改善代码复用率,实现能耗优化。
本发明的技术方案是:一种基于改进神经网络的嵌入式软件能耗测试方法,首先分析引 入的嵌入式软件,得到节点关系图;接着根据节点关系图,分析每个节点的聚类关系、出度、 入度,根据每个节点的聚类关系得到聚类关系平均值;然后将输入节点的聚类关系、出度、 入度值,每个输入节点的聚类关系得到的聚类关系平均值代入改进的神经网络模型;再根据 每个输出节点的输出值与设定的每个输出节点的训练目标值,计算每个节点输出值的误差; 最后在Linux系统中,将优化后的节点个数对应的嵌入式软件,采用功耗仿真器进行能耗测 试,得到优化后的能耗值。
所述方法的具体步骤如下:
Step1、分析引入的嵌入式软件,得到节点关系图:
首先确定嵌入式软件系统中涉及的各个模块,将系统模块分解成每个简单的子系统模块; 然后分析每个模块函数体之间的变量关系,将每个模块作为一个节点,通过模块之间的变量 关系连接每个节点,最后得到节点关系图;
Step2、根据节点关系图,分析每个节点的聚类关系、出度、入度,根据每个节点的聚类 关系得到聚类关系平均值:
聚类关系Ci=2Ei/Ni(Ni-1);其中,Ei为Ni个节点之间实际存在的边数,Ni为 与节点i相连的边数;
出度X-i为从节点i流出的边的数目,入度Xi为流入节点i的边的数目;
聚类关系平均值其中,L为节点总数;
Step3、将输入节点的聚类关系、出度、入度值,每个输入节点的聚类关系得到的聚类关 系平均值代入改进的神经网络模型:
将输入节点的聚类关系、出度、入度值代入改进的神经网络模型隐节点的输出模型 i=1,…L;将每个输入节点的聚类关系得到的聚类关 系平均值代入改进的神经网络模型输出节点的输出模型Yi=f(T×Oi×C-q),i=1,…L; 其中f为训练函数,w、T为连接权向量,s为隐节点的个数,q为隐节点或者输出节点的输 出模型的神经单元阀值,Oi为第i个隐节点输出值,Yi为第i个输出节点输出值;其中隐藏节 点的个数与输入节点的个数相等,输出节点的个数与隐藏节点的个数相等;
Step4、根据每个输出节点的输出值与设定的每个输出节点的训练目标值,计算每个节点 输出值的误差:
若存在输出节点的输出值误差小于输出节点的最小误差Es,则对该输出节点进行优化, 得到优化后的节点个数,接着根据优化后的节点个数直接改善优化代码,再得到节点关系图, 接着重复执行步骤Step2-步骤Step4;
当每个输出节点的输出值误差都大于输出节点的最小误差Es,则执行步骤Step5;
其中,
Step5、在Linux系统中,将优化后的节点个数对应的嵌入式软件,采用功耗仿真器进行 能耗测试,得到优化后的能耗值。
本发明的有益效果是:通过分析嵌入式软件程序中的节点关系图,得出各个节点的聚类 关系、聚类关系平均值、出度、入度值,改进神经网络模型且在MATLAB中进行每个节点数 据训练,设定每个输出节点的最小均方差,计算每个输出节点的输出值,通过是否满足神经 网络全局误差,优化节点的聚类关系、聚类关系平均值、出入度,改善了代码复用率,实现 了能耗优化。
附图说明
图1是本发明的流程图;
图2是本发明中的节点关系图一;
图3是本发明中的节点关系图二;
图4是本发明中神经网络模型训练结果图一;
图5是本发明中神经网络模型训练结果图。
具体实施方式
下面结合附图和实施例,对本发明作进一步说明,但本发明的内容并不限于所述范围。
实施例1:如图1-5所示,一种基于改进神经网络的嵌入式软件能耗测试方法,首先分析 引入的嵌入式软件,得到节点关系图;接着根据节点关系图,分析每个节点的聚类关系、出 度、入度,根据每个节点的聚类关系得到聚类关系平均值;然后将输入节点的聚类关系、出 度、入度值,每个输入节点的聚类关系得到的聚类关系平均值代入改进的神经网络模型;再 根据每个输出节点的输出值与设定的每个输出节点的训练目标值,计算每个节点输出值的误 差;最后在Linux系统中,将优化后的节点个数对应的嵌入式软件,采用功耗仿真器进行能 耗测试,得到优化后的能耗值。
所述方法的具体步骤如下:
Step1、分析引入的嵌入式软件,得到节点关系图:
首先确定嵌入式软件系统中涉及的各个模块,将系统模块分解成每个简单的子系统模块; 然后分析每个模块函数体之间的变量关系,将每个模块作为一个节点,通过模块之间的变量 关系连接每个节点,最后得到节点关系图;
Step2、根据节点关系图,分析每个节点的聚类关系、出度、入度,根据每个节点的聚类 关系得到聚类关系平均值:
聚类关系Ci=2Ei/Ni(Ni-1);其中,Ei为Ni个节点之间实际存在的边数,Ni为 与节点i相连的边数;
出度X-i为从节点i流出的边的数目,入度Xi为流入节点i的边的数目;
聚类关系平均值其中,L为节点总数;
Step3、将输入节点的聚类关系、出度、入度值,每个输入节点的聚类关系得到的聚类关 系平均值代入改进的神经网络模型:
将输入节点的聚类关系、出度、入度值代入改进的神经网络模型隐节点的输出模型 i=1,…L;将每个输入节点的聚类关系得到的聚类关 系平均值代入改进的神经网络模型输出节点的输出模型Yi=f(T×Oi×C-q),i=1,…L; 其中f为训练函数,w、T为连接权向量,s为隐节点的个数,q为隐节点或者输出节点的输 出模型的神经单元阀值,Oi为第i个隐节点输出值,Yi为第i个输出节点输出值;其中隐藏节 点的个数与输入节点的个数相等,输出节点的个数与隐藏节点的个数相等;
Step4、根据每个输出节点的输出值与设定的每个输出节点的训练目标值,计算每个节点 输出值的误差:
若存在输出节点的输出值误差小于输出节点的最小误差Es,则对该输出节点进行优化, 得到优化后的节点个数,接着根据优化后的节点个数直接改善优化代码,再得到节点关系图, 接着重复执行步骤Step2-步骤Step4;
当每个输出节点的输出值误差都大于输出节点的最小误差Es,则执行步骤Step5;
其中,
Step5、在Linux系统中,将优化后的节点个数对应的嵌入式软件,采用功耗仿真器进行 能耗测试,得到优化后的能耗值。
实施例2:如图1-5所示,一种基于改进神经网络的嵌入式软件能耗测试方法,首先分析 引入的嵌入式软件,得到节点关系图;接着根据节点关系图,分析每个节点的聚类关系、出 度、入度,根据每个节点的聚类关系得到聚类关系平均值;然后将输入节点的聚类关系、出 度、入度值,每个输入节点的聚类关系得到的聚类关系平均值代入改进的神经网络模型;再 根据每个输出节点的输出值与设定的每个输出节点的训练目标值,计算每个节点输出值的误 差;最后在Linux系统中,将优化后的节点个数对应的嵌入式软件,采用功耗仿真器进行能 耗测试,得到优化后的能耗值。
所述方法的具体步骤如下:
Step1、分析引入的嵌入式软件,得到节点关系图,如图2、3所示,
if(n<0)
return false;//如果n为负,结束程序
if(n==1||n==0)
return(1);//如果n为1或n为0,返回1
else
return(n*Factorial(n-1));
Step2、根据图2、3,分析每个节点的聚类关系、出度、入度,根据每个节点的聚类关系 得到聚类关系平均值:
a节点的聚类关系Ci=2/3、出度X-i=3、入度Xi=1;
b节点的聚类关系Ci=2;出度X-i=1;入度Xi=1;
c节点的聚类关系Ci=1;出度X-i=1;入度Xi=2;
d节点的聚类关系Ci=0;出度X-i=0;入度Xi=1;聚类关系平均值C=11/12。
Step3、将输入节点的聚类关系、出度、入度值,每个输入节点的聚类关系得到的聚类关 系平均值代入改进的神经网络模型:
将输入节点的聚类关系、出度、入度值代入改进的神经网络模型隐节点的输出模型 i=1,…L;将每个输入节点的聚类关系得到的聚类关 系平均值代入改进的神经网络模型输出节点的输出模型Yi=f(T×Oi×C-q),i=1,…L; 其中f为训练函数为w=2、T=4为连接权向量,s为隐节点的个数为4,q=100=1 为隐节点和输出节点的输出模型的神经单元阀值,Oi为第i个隐节点输出值,Yi为第i个输出 节点输出值;其中隐藏节点的个数与输入节点的个数相等,输出节点的个数与隐藏节点的个 数相等;
Step4、根据每个输出节点的输出值与设定的每个输出节点的训练目标值,计算每个节点 输出值的误差:
通过MATLAB对四个输出节点数据进行训练,其中四个输出节点的目标值设定为100, 将a、b、c、d四个输出节点通过改进的神经网络模型进行训练后,训练结果如图4所示(其 中x轴表示节点,y轴表示输出值),其中d输出节点的输出值误差小于设定输出节点的最小 误差Es=10-1,因此说明d输出节点在节点关系图中可以进行优化,得到优化后的节点个数, 接着根据优化后的节点个数直接改善优化代码,再得到节点关系图,接着重复执行 Step2-Step4;再通过MATLAB对优化后的三个输出节点数据进行训练,训练结构如图5所示, a、b、c三个输出节点的输出值误差大于设定输出节点的最小误差Es=10-1,执行Step5;
Step5、在Linux系统中,将优化后的节点个数对应的嵌入式软件,采用sim-panalyzer功 耗仿真器进行能耗测试,得到优化后的能耗值,如表1所示,同时,表1中还给出了不同节 点数的情况下,通过本发明方法得到优化后能耗值的数据:
表1程序实际能耗值与优化后能耗值对比
通过上述实验和实例数据分析,对于有26个节点的节点关系图,通过改进BP神经网络 模型,对节点关系图中节点的出入度和聚类系数进行训练,优化节点关系图中8个节点,减 少了节点之间的聚类关系和出入度,降低了软件代码的复用率,使其能耗降低了15%。然而 对于节点数越多的节点关系图,优化的节点数也就越多,如表1中,124个节点的关系图, 实行优化后只有83个节点,能耗降低了25%。实验表明通过将节点替换成输出节点后进行训 练,能有效的优化节点数,改善程序代码质量,降低嵌入式软件能耗。
上面结合附图对本发明的具体实施方式作了详细说明,但是本发明并不限于上述实施方 式,在本领域普通技术人员所具备的知识范围内,还可以在不脱离本发明宗旨的前提下作出 各种变化。
机译: 一种学习方法和学习装置,用于通过执行通过能够通过相机测试方法获取的雷达获取的传感器融合集成信息来改进支持自主行程的神经网络和通过相机测试方法获取的信息和使用相同的测试设备
机译: 基于卷积神经网络的对象检测器的CNN学习方法和学习装置,其能够根据对象的尺度转换模式和使用相同的测试方法和测试装置的卷积神经网络
机译: 基于卷积神经网络的用于对象监视的CNN学习方法和学习装置,该卷积神经网络可以根据对象的规模转换模式,并使用相同的测试方法和测试设备