MATLAB神经网络编程(三)——线性神经网络的构建与实现

MATLAB神经网络编程(三)——线性神经网络的构建与实现

http://blog.csdn.net/fieldoffier/article/details/44497457

《MATLAB神经网络编程》 化学工业出版社 读书笔记 
第四章 前向型神经网络 4.2 线性神经网络

本文是《MATLAB神经网络编程》书籍的阅读笔记,其中涉及的源码、公式、原理都来自此书,若有不理解之处请参阅原书。

首先定义一些神经网络中常用的参数意义,如下图:

定义

一,线性神经网络的构建。

1,生成线性神经元。

构建一个如下图所示的具有两个输入端的单神经元线性网络。

16

其权值矩阵W是一个行向量,网络输出a为:

a=purelin(n)=purelin(WP+b)=WP+b

或者:

a=w1,1*p1+w1,2*p2+b

与感知器一样,线性神经网络也有一个分界线,由输入向量决定,即n=0时,方程WP+b=0,分类示意图如下:

17

输入向量在分界线右上时,输出大于0;输入向量在左下时,输出小于0.这样,线性神经网络就可以用来研究分类问题;当然,前提是进行分类的问题是线性可分的,这与感知器的局限是相同的。

【例4-13】应用newlin设计一个双输入单输出线性神经网络,输入向量范围是[-1 1;-1 1],学习速率是1。

源代码是如下:

<code class="hljs matlab has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;">clear all
net=newlin(<span class="hljs-matrix" style="box-sizing: border-box;">[-<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>;-<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>]</span>,<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>);    <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">%此时网络权值和阈值默认为0</span>
W=<span class="hljs-transposed_variable" style="box-sizing: border-box;">net.</span>IW<span class="hljs-cell" style="box-sizing: border-box;">{<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>,<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>}</span>    <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">%W=0 0</span>
b=<span class="hljs-transposed_variable" style="box-sizing: border-box;">net.</span>b<span class="hljs-cell" style="box-sizing: border-box;">{<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>}</span>    <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">%b=0</span>
<span class="hljs-transposed_variable" style="box-sizing: border-box;">net.</span>IW<span class="hljs-cell" style="box-sizing: border-box;">{<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>,<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>}</span>=<span class="hljs-matrix" style="box-sizing: border-box;">[<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2</span> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">3</span>]</span>;  <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">%分别设置网络的权值、阈值</span>
<span class="hljs-transposed_variable" style="box-sizing: border-box;">net.</span>b<span class="hljs-cell" style="box-sizing: border-box;">{<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>}</span>=<span class="hljs-matrix" style="box-sizing: border-box;">[-<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">4</span>]</span>;

p=<span class="hljs-matrix" style="box-sizing: border-box;">[<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">5</span>;<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">6</span>]</span>;    <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">%p是输入向量</span>
a=sim(net,p)    <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">%利用上面建立的网络判断p相应的输出a</span></code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li></ul>

输出是: 
18

2,线性滤波器。 
首先是应用于线性神经网络中的触发延迟线(这个到底是什么我是在不明白)。 
若在线性神经网络中应用了触发延迟线,则产生的线性滤波器的输出:

19

这样的网络可以应用于信号处理滤波。 
【例4-14】假设输入向量P,期望输出向量T,以及初始输入延迟P1。

源代码如下:

<code class="hljs matlab has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;">clear all
P=<span class="hljs-cell" style="box-sizing: border-box;">{<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2</span> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">3</span> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">3</span> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2</span>}</span>;
P1=<span class="hljs-cell" style="box-sizing: border-box;">{<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">3</span>}</span>;
T=<span class="hljs-cell" style="box-sizing: border-box;">{<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">5</span> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">6</span> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">4</span> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">20</span> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">7</span> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">8</span>}</span>;
<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">%应用newlind函数构造一个网络以满足上面的输入/输出关系和延迟条件</span>
net=newlind(P,T,P1);
Y=sim(net,P,P1)    <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">%验证网络的输出。</span></code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li></ul>

输出为:

20

二,网络训练。

自适应线性元件的网络训练过程可以归纳为三个步骤: 
(1),表达。计算训练的输出矢量a=wp+b,以及与期望输出之间的误差e=t-a. 
(2),检查。将网络的输出误差的平方和与期望误差相比较,如果其值小于期望误差,或者训练已经达到事先设定的最大训练次数,则停止训练,否则继续。 
(3),学习。采用W-H学习规则计算新的权值和偏差,并返回第一步。 
每进行一次上述三个步骤,就认为是完成一个训练循环次数。 
如果经过训练,网络仍然不能达到期望目标,可以有两种选择:一是检查一下所要解决的问题,是否适用于线性网络;二是对网络进行进一步的训练。

虽然只适用于线性网络,W-H学习规则仍然是重要的,因为它展现了梯度下降法是如何来训练一个网络的,此概念后来发展成反射传播法,使之可以训练多层非线性网络。

【例4-15】考虑一个较大的神经元网络的模式联想的设计问题。输入矢量和目标矢量分别是: 
P=[1 1.5 1.2 -0.3;-1 2 3 -0.5;2 1 -1.6 0.9]; 
T=[0.5 3 -2.2 1.4;1.1 -1.2 1.7 -0.4;3 0.2 -1.8 -0.4;-1 0.4 -1.0 0.6];

这个问题可以通过线性方程组的方式求出唯一的解,这是比较复杂,此时就可以通过自适应线性网络的方式得出有一定误差的解。 
源代码:

<code class="hljs r has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;">clear all;
P=[<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1.5</span> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1.2</span> -<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0.3</span>;-<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2</span> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">3</span> -<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0.5</span>;<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2</span> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span> -<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1.6</span> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0.9</span>];
<span class="hljs-literal" style="color: rgb(0, 102, 102); box-sizing: border-box;">T</span>=[<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0.5</span> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">3</span> -<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2.2</span> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1.4</span>;<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1.1</span> -<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1.2</span> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1.7</span> -<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0.4</span>;<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">3</span> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0.2</span> -<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1.8</span> -<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0.4</span>;-<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0.4</span> -<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1.0</span> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0.6</span>];
[S,Q]=size(<span class="hljs-literal" style="color: rgb(0, 102, 102); box-sizing: border-box;">T</span>);
max_epoch=<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">400</span>;    %最大训练次数
err_goal=<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">100</span>;
err_goal=<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0.001</span>;
lr=<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0.9</span>*maxlinlr(P);
%初始权值
W0=[<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1.9978</span> -<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0.5959</span> -<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0.3517</span>;<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1.5543</span> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0.05331</span> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1.3660</span>;<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">...</span>
    <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1.0672</span> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0.3645</span> -<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0.9227</span> ;-<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0.7747</span> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1.3839</span> -<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0.3384</span>];
B0=[<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0.0746</span>;-<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0.0642</span>;-<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0.4256</span>;-<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0.6433</span>];
net=newlin(minmax(P),S,[<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span>],lr);
net.IW{<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>,<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>}=W0;
net.b{<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>}=B0;
a=sim(net,P);
e=<span class="hljs-literal" style="color: rgb(0, 102, 102); box-sizing: border-box;">T</span>-a;
sse=(sumsqr(e))/(S*Q);    %求误差平方和的平均值
fprintf(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'Before traing,sum squrared error=%g.\n'</span>,sse); %显示训练前的网络均方差
net.trainParam.epochs=<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">400</span>;    %最大循环次数
net.trainParam.goal=<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0.001</span>;    %期望误差(均方差)
[net,tr]=train(net,P,<span class="hljs-literal" style="color: rgb(0, 102, 102); box-sizing: border-box;">T</span>);
W=net.iw{<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>,<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>}
B=net.b{<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>}    %显示最终的权值</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li><li style="box-sizing: border-box; padding: 0px 5px;">14</li><li style="box-sizing: border-box; padding: 0px 5px;">15</li><li style="box-sizing: border-box; padding: 0px 5px;">16</li><li style="box-sizing: border-box; padding: 0px 5px;">17</li><li style="box-sizing: border-box; padding: 0px 5px;">18</li><li style="box-sizing: border-box; padding: 0px 5px;">19</li><li style="box-sizing: border-box; padding: 0px 5px;">20</li><li style="box-sizing: border-box; padding: 0px 5px;">21</li><li style="box-sizing: border-box; padding: 0px 5px;">22</li><li style="box-sizing: border-box; padding: 0px 5px;">23</li><li style="box-sizing: border-box; padding: 0px 5px;">24</li></ul>

输出的结果:

21

22

对于存在零误差的精确权值网络,若用函数newlind来求解,则更加简单,上例可以用源代码如下:

<code class="hljs matlab has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;">clear all;
P=<span class="hljs-matrix" style="box-sizing: border-box;">[<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1.5</span> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1.2</span> -<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0.3</span>;-<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2</span> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">3</span> -<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0.5</span>;<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2</span> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span> -<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1.6</span> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0.9</span>]</span>;
T=<span class="hljs-matrix" style="box-sizing: border-box;">[<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0.5</span> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">3</span> -<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2.2</span> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1.4</span>;<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1.1</span> -<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1.2</span> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1.7</span> -<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0.4</span>;<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">3</span> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0.2</span> -<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1.8</span> -<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0.4</span>;-<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0.4</span> -<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1.0</span> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0.6</span>]</span>;
<span class="hljs-matrix" style="box-sizing: border-box;">[S,Q]</span>=<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">size</span>(T);
b=<span class="hljs-matrix" style="box-sizing: border-box;">[]</span>;
w=<span class="hljs-matrix" style="box-sizing: border-box;">[]</span>;
a=<span class="hljs-matrix" style="box-sizing: border-box;">[]</span>;
<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">for</span> <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">i</span>=<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>:S
    net=newlind(P,T(<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">i</span>,:));    <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">%设计一个具有一个行向量的线性网络</span>
    w=<span class="hljs-matrix" style="box-sizing: border-box;">[w;net.iw{<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>,<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>}]</span>
    b=<span class="hljs-matrix" style="box-sizing: border-box;">[b;net.b{<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>}]</span>
    a=<span class="hljs-matrix" style="box-sizing: border-box;">[a;sim(net,P)]</span>
<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">end</span>
w    <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">%输出完整的偏差和权值</span>
b
a    <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">%显示网络的最终输出</span>
</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li><li style="box-sizing: border-box; padding: 0px 5px;">14</li><li style="box-sizing: border-box; padding: 0px 5px;">15</li><li style="box-sizing: border-box; padding: 0px 5px;">16</li><li style="box-sizing: border-box; padding: 0px 5px;">17</li></ul>

23

因为newlind是按(行)向量序列的方式来构造和设计一个线性网络的,所以对于具有多输出神经网络的设计,需要经过多次循环来获得最终成果。

通常可以直接判断一个线性网络是否有完美的零误差的解。如果每个神经元所具有的自由度(权值与阈值的数量和)等于或者大于限制数(即输入或者输出的矢量对)【可以认为是公式:R+1>=Q】,那么线性网络可以零误差的解决问题。不过这一结论在输入矢量线性相关或者没有阈值时不成立。


  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值