老饼讲解-神经网络
其它神经网络
工具箱DEMO
概率神经网络
作者 : 老饼 日期 : 2022-06-09 15:09:44 更新 : 2022-06-29 01:37:10
本站原创文章,转载请说明来自《老饼讲解-BP神经网络》bp.bbbdata.com


概率神经网络(Probabilistic Neural Network)由D.F.Speeht在1989年提出,是径向基网络的一个分支。

它与广义神经网络类似,但概率神经网络仅用于模式识别(分类)。

本文主要讲述在matlab工具箱里如何训练与使用概率神经网络(newpnn)。



一、简单demo


matlab工具箱建立概率神经网络(newpnn)进行分类的Demo代码(2014b版matlab实测已跑通):

% 训练数据
P = [1 2 3 4 5 6 7];   % 输入数据
Tc = [1 2 3 2 2 3 1];  % 输出数据:类别编号
T = ind2vec(Tc);       % 将类标转换为onehot编码格式

%设计一个PNN神经网络,并测试
net = newpnn(P,T);     % 生成一个概率神经网络
Y = sim(net,P)         % 用网络进行预测
Yc = vec2ind(Y)        % 将预测结果转为类别编号 




二、工具箱说明


翻译matlab给出的doc newrb 文档(为方便大家理解,本人作了些少改动),帮助大家更进一步使用newrb

语法:

net = newpnn(P,T,spread)


说明:

概率神经网络(PNN)是一种径向基神经网络,适用于解决分类问题。
net = newpnn(P,T,spread) 需要2或3个入参。返回一个新的概率神经网络


入参说明:

P: R行Q列的输入矩阵,R个输入变量,Q个样本。
T: S行Q列的目标输出矩阵,S个输出变量,Q个样本。
spread :径向基函数的扩展系数(默认=1.0)

如果spread 近似于0,那么网络的表现为一个最邻近分类器。随着spread 变大,网络会考虑几个邻近的样本。

(If spread is near zero, the network acts as a nearest neighbor classifier. As spread becomes larger, the designed network takes into account several nearby design vectors.)


三、算法说明


newpnn是不需要训练的,因为它实际是用训练样本来估算新本,因此,只要把训练样本存到网络中即可。


● 网络构建

它的输入层-隐层的权重W21,存的就是训练样本的输入。
它的隐层阈值B2,存的是由参数spread生成的控制径向基肥瘦的参数。
它的隐层-输出层W32,存的则是训练数据的输出。

备注:概率神经网络的输出层没阈值。


● 网络预测

预测时,
(1)计算隐节点值激活值ha(hide active):ha = 径向基函数( B2*dist(x,W21))
(2) 计算输出值:y = compet( W32*ha )








  End  









联系小饼