0

这是我的代码:

p = input1;
t1 = output1;
net = feedforwardnet(10, 'trainrp');
net.trainParam.epochs = 1000;
net.trainParam.goal = 0.0005;
net = train(net, p, t1); 
y1 = sim(net, p);
p = input2;
t2 = tar;
y2 = sim(net, p);

但是,我收到此错误:

error using bsxfun
Non-singleton dimensions of the two input arrays must match each other.

Error in nnMATLAB.pc (line 24)
pi = bsxfun(@minus,pi,settings.xoffset);

Error in nncalc.preCalcData (line 20)
data.Pc = calcMode.pc(net,data.X,data.Xi,data.Q,data.TS,calcHints);

Error in nncalc.setup1 (line 118)
calcData =

nncalc.preCalcData(matlabMode,matlabHints,net,data,doPc,doPd,calcHints.doFlattenTime);

Error in network/sim (line 283)
[calcMode,calcNet,calcData,calcHints,~,resourceText] = nncalc.setup1(calcMode,net,data);

我想制作一个神经网络,其中 input1 作为输入 310 x 24 矩阵和 output1 作为输出,155 x 24 矩阵。

此外,我将使用 input1 和 output1 训练网络

在这个训练过程之后,我将使用 input2 作为测试数据,我想使用上面的由 input1 和 output1 训练的网络得到一个模拟结果。

总之,我想用 input1 和 output1 训练我自己的网络,我想用 input2 得到我的模拟结果。

我认为这些错误是基于训练部分和测试部分之间的输入大小差异。

我怎么解决这个问题?我应该运行额外的过程吗?

我正在寻找你亲切的答案。

谢谢你。

4

1 回答 1

0

训练和测试的输入数量必须相同。

对于训练:输入必须是 NxQ 矩阵,其中 N 是输入元素的数量,M 是样本的数量。目标必须是 MxQ 矩阵,其中 M 是输出元素的数量,Q 与输入相同。

然后进行测试:输入矩阵必须为 NxQ2,其中 N 与训练时相同,但样本数量 Q2 可以任意。例如,对于单个向量 Q2 等于 1。然后输出将是 MxQ2,其中 M 与用于训练的输出数量相同,Q2 与测试输入数据的向量数量相同。

于 2014-03-26T02:44:53.657 回答