有哪位RBF神经网络高手能帮我写一下在RBF用聚类方法求中心时的程序啊!谢谢啦

有哪位RBF神经网络高手能帮我写一下在RBF用聚类方法求中心时的程序啊!谢谢啦,第1张

我参照《神经网络原理》的算法描述写的,不知道对不对,欢迎探讨。

void CRBFNN::KMeansCluster(size_t K)

{

if( K >m_nPatternNum)

return

int* vecLabel= new int[m_nPatternNum]

//step1 初始化 选择K个初始不同的中心点

RandomSelCenter(K)

while(true)

{

memset(vecLabel,-1,sizeof(int)*m_nPatternNum)

size_t rnd = rand()%m_nPatternNum//抽取样本 以某种概率抽取样本向量

float fMin = (float)INT_MAX

float fNum = 0

//step2 相似匹配 _input[rnd]离_center[j]最近,则标记为j

for(int j=0j<(int)Kj++)

{

fNum = 0

for(size_t k = 0k<m_nInputNumk++)

fNum += (_input[rnd][k]-_center[j][k])*(_input[rnd][k]-_center[j][k])

if(fNum <fMin)

{

fMin = fNum

vecLabel[rnd] = j

}

}

//step3 更新中心 重新计算_center

CMatrix lastCenter = _center//一个对象需要通过另外一个对象进行初始化,调用拷贝初始化

for(int i=0i<(int)Ki++)

{

if(vecLabel[rnd] == i)

{

for(size_t j=0j<m_nInputNumj++)

_center[i][j] = _center[i][j] + (_input[rnd][j]-_center[i][j])*0.1f//学习率0.1

}

}

//step4 _center无明显变化退出

fNum = 0

for(int i=0i<(int)Ki++)

{

for(size_t k = 0k<m_nInputNumk++)

fNum += (_center[i][k]-lastCenter[i][k])*(_center[i][k]-lastCenter[i][k])

}

if(fNum <1e-3)

break

}

delete[] vecLabel

}

RBF网络能够逼近任意的非线性函数,可以处理系统内的难以解析的规律性,具有良好的泛化能力,并有很快的学习收敛速度,已成功应用于非线性函数逼近、时间序列分析、数据分类、模式识别、信息处理、图像处理、系统建模、控制和故障诊断等。

简单说明一下为什么RBF网络学习收敛得比较快。当网络的一个或多个可调参数(权值或阈值)对任何一个输出都有影响时,这样的网络称为全局逼近网络。由于对于每次输入,网络上的每一个权值都要调整,从而导致全局逼近网络的学习速度很慢。BP网络就是一个典型的例子。

如果对于输入空间的某个局部区域只有少数几个连接权值影响输出,则该网络称为局部逼近网络。常见的局部逼近网络有RBF网络、小脑模型(CMAC)网络、B样条网络等。

附件是RBF神经网络的C++源码。

在命令栏敲nntool,按提示 *** 作,将样本提交进去。

还有比较简单的是用广义RBF网络,直接用grnn函数就能实现,基本形式是y=grnn(P,T,spread),你可以用help grnn看具体用法。GRNN的预测精度是不错的。

广义RBF网络:从输入层到隐藏层相当于是把低维空间的数据映射到高维空间,输入层细胞个数为样本的维度,所以隐藏层细胞个数一定要比输入层细胞个数多。从隐藏层到输出层是对高维空间的数据进行线性分类的过程,可以采用单层感知器常用的那些学习规则,参见神经网络基础和感知器。

注意广义RBF网络只要求隐藏层神经元个数大于输入层神经元个数,并没有要求等于输入样本个数,实际上它比样本数目要少得多。因为在标准RBF网络中,当样本数目很大时,就需要很多基函数,权值矩阵就会很大,计算复杂且容易产生病态问题。另外广RBF网与传统RBF网相比,还有以下不同:

1.径向基函数的中心不再限制在输入数据点上,而由训练算法确定。

2.各径向基函数的扩展常数不再统一,而由训练算法确定。

3.输出函数的线性变换中包含阈值参数,用于补偿基函数在样本集上的平均值与目标值之间的差别。

因此广义RBF网络的设计包括:

1.结构设计--隐藏层含有几个节点合适

2.参数设计--各基函数的数据中心及扩展常数、输出节点的权值。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7879304.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-11
下一篇 2023-04-11

发表评论

登录后才能评论

评论列表(0条)

保存