learnp感知器权重和偏差学习功能
句法:
[dW,LS] = learnp(W,P,Z,N,A,T,E,gW,gA,D,LP,LS)
info = learnp(‘code’)
描述:
learnp是感知器重量/偏差学习功能。
[dW,LS] = learnp(W,P,Z,N,A,T,E,gW,gA,D,LP,LS)需要几个输入,
W - SxR权重矩阵(或b,Sx1偏差向量)。
P - RxQ输入向量(或(1,Q))。
Z - SxQ加权输入向量。
N - SxQnet输入向量。
A - SxQ输出向量。
T - SxQ层目标向量。
E - SxQ层误差向量。
gW - 相对于性能的SxR梯度。
gA - SxQ输出梯度与性能有关。
D - SxS神经元距离。
LP - 学习参数,无,LP = []。
LS - 学习状态,最初应为= []。
并返回,
dW - SxR权重(或偏差)改变矩阵。
LS - 新的学习状态。
learnp(CODE)返回每个CODE字符串的有用信息:
‘pnames’ - 返回学习参数的名称。
‘pdefaults’ - 返回默认的学习参数。
‘needg’ - 如果此函数使用gW或gA,则返回1。
在这里,我们定义一个随机输入P和误差E.
具有2元素输入和3个神经元的单层神经网络。
p = rand(2,1);
e = rand(3,1);
learnp只需要这些值来计算修正权值。
dW = learnp([],p,[],[],[],[],e,[],[],[],[],[])
net使用
您可以创建一个使用learnp和newp的标准网络。
准备自定义网络的第i层的权重和偏差,以便用learnp学习,
将net.trainFcn设置为’trainb’。 (net.trainParam自动成为trainb的默认参数。)
将net.adaptFcn设置为’train’。 (net.adaptParam自动成为train的默认参数。)
将每个net.inputWeights {i,j} .learnFcn设置为’learnp’。
将每个net.layerWeights {i,j} .learnFcn设置为’learnp’。
将net.biases {i} .learnFcn设置为’learnp’。 (每个权重和偏差学习参数属性自动成为空矩阵,因为learnp没有学习参数。)
要训练网络(或使其适应),
将net.trainParam(或net.adaptParam)属性设置为所需的值。
learnp根据感知器学习规则从神经元的输入P和误差E计算给定神经元的权重变化dW:
dw = 0,如果e = 0
= p’,如果e = 1
= -p’,如果e = -1
这可以概括为
dw = e * p’