matlab thresholding,神经网络中关于threshold的一点理解

  • Post author:
  • Post category:其他


我使用神经网络,用来实现七段编码器,7个输入,4个输出,隐含层个数为5个,如下:

P =

1     0     1     1     0     1     1     1     1     1

1     1     1     1     1     0     0     1     1     1

1     1     0     1     1     1     1     1     1     1

1     0     1     1     0     1     1     0     1     1

1     0     1     0     0     0     1     0     1     0

1     0     0     0     1     1     1     0     1     1

0     0     1     1     1     1     1     0     1     1

>> T

T =

0     0     0     0     0     0     0     0     1     1

0     0     0     0     1     1     1     1     0     0

0     0     1     1     0     0     1     1     0     0

0     1     0     1     0     1     0     1     0     1

>> net=newff([0 1],[5,4],{‘tansig’,’logsig’},’trainlm’);

>> net.trainParam.epochs=1000;

>> net.trainParam.goal=0.01;

>> LP.lr=0.1;

>> net=train(net,P,T)

输入命令,有错误,提示:

??? Error using ==> network.train at 228

Inputs are incorrectly sized for network.

Matrix must have 1 rows.

由上面的代码,可以看出,出现的问题不在于输入P和输出T的列数不一样。后面我就想,应该是newff后面的[0,1]出的问题,把代码改过,如下:

>> threshold=[0,1;0,1;0,1;0,1;0,1;0,1;0,1];

>> net=newff(threshold,[5,4],{‘tansig’,’logsig’},’trainlm’);

>> net.trainParam.epochs=1000;

>>  net.trainParam.goal=0.01;

>> LP.lr=0.1;

>>  net=train(net,P,T)

TRAINLM-calcjx, Epoch 0/1000, MSE 0.337452/0.01, Gradient 0.182894/1e-010

TRAINLM-calcjx, Epoch 10/1000, MSE 0.00464531/0.01, Gradient 0.0106673/1e-010

TRAINLM, Performance goal met.

“threshold”是指输入向量的最小值和最大值,这里它是7行2列,而不是10行2列。首先,P是输入向量,每列是一个样本,在这里就是10个样本,每个样本是7维,也就是说,threshold的行数是每个样本中的维数,而不是样本数。

我是这样理解的,不知道对不对,拿来向大家请教和讨论。