我正在创建具有反向传播的一个2层的神经网络。 该NN应该从保持每行中以下信息20001x17矢量获取其数据:
-The第16个单元持有的整数范围从0到15,它作为变量来帮助我们确定我们的意思是看到那些变量时表示字母表中的26个字母的其中之一。 例如一系列16个值如下的意在表示字母A:[2 8 4 5 2 7 5 3 1 6 0 8 2 7 2 7]。
-The 17细胞持有数从1到26代表我们想要的字母表的字母。 1个代表A,2个代表乙等
在NN的输出层由26个输出的。 每次NN被供给像它上面描述的一个的输入的应该输出包含全零,但对应于该字母的是,输入值旨在代表一个小区1x26载体。 例如输出[1 0 0 ... 0]将是字母A,而[0 0 0 ... 1]将字母Z
有些东西在我目前的代码,重要的是:我需要使用traingdm函数和隐层数在21固定的(现在)。
试图创建上述概念我写了下面的MATLAB代码:
%%%%%%%%
%Start of code%
%%%%%%%%
%
%Initialize the input and target vectors
%
p = zeros(16,20001);
t = zeros(26,20001);
%
%Fill the input and training vectors from the dataset provided
%
for i=2:20001
for k=1:16
p(k,i-1) = data(i,k);
end
t(data(i,17),i-1) = 1;
end
net = newff(minmax(p),[21 26],{'logsig' 'logsig'},'traingdm');
y1 = sim(net,p);
net.trainParam.epochs = 200;
net.trainParam.show = 1;
net.trainParam.goal = 0.1;
net.trainParam.lr = 0.8;
net.trainParam.mc = 0.2;
net.divideFcn = 'dividerand';
net.divideParam.trainRatio = 0.7;
net.divideParam.testRatio = 0.2;
net.divideParam.valRatio = 0.1;
%[pn,ps] = mapminmax(p);
%[tn,ts] = mapminmax(t);
net = init(net);
[net,tr] = train(net,p,t);
y2 = sim(net,pn);
%%%%%%%%
%End of code%
%%%%%%%%
现在我的问题:我想被描述我的输出,即例如Y2向量的每一列应该是一个字母的表示。 我的代码没有做,虽然。 相反,它产生的0和1之间变化很大的效果,从0.1到0.9的值。
我的问题是:是否有一些转换,我需要做的是我不? 意思是,我一定要我的输入和/或输出数据转换为表格由我可以清楚地看到,如果我的NN正确地学习?
任何输入,将不胜感激。