老饼讲解-神经网络 机器学习 神经网络 深度学习
综合杂文

【Demo】概率神经网络-Matlab代码Demo

作者 : 老饼 发表日期 : 2022-06-09 15:09:44 更新日期 : 2023-05-09 06:23:15
本站原创文章,转载请说明来自《老饼讲解-BP神经网络》www.bbbdata.com


概率神经网络全称为Probabilistic Neural Network

它由D.F.Speeht在1989年提出,是径向基网络的一个分支

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

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



   01. PNN-简单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)        % 将预测结果转为类别编号 





   02. PNN-工具箱说明


本节翻译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.




   03. PNN的构建算法说明   


本节简单介绍PNN的构建算法原理和预测时的计算逻辑


    PNN的构建算法说明    


newpnn是不需要训练的,
因为它实际是用训练样本来估算新本,
因此,只要把训练样本存到网络中即可
 
 
PNN神经网络的构建
 
它的输入层-隐层的权重W21,存的就是训练样本的输入                    
 它的隐层阈值B2,存的是由参数spread生成的控制径向基肥瘦的参数
 它的隐层-输出层W32,存的则是训练数据的输出                              
✍️备注:概率神经网络的输出层没阈值
 PNN神经网络的预测
 
预测时,
1. 先计算隐节点值激活值(hide active)

 

2. 利用隐节点值计算输出值                     

 









  End  









联系老饼