Matlab-使用训练好的网络进行测试

Matlab-使用训练好的网络进行测试,matlab,neural-network,sim-card,Matlab,Neural Network,Sim Card,我的项目是识别古钱币。我正在使用Matlab。我已经有了一个包含输入和输出的功能文件。我已经使用newff训练了3种类型的硬币,网络已经保存。对于这三种类型的硬币,我使用01、10和11作为目标。现在我想用那个经过训练的网络进行测试。我也有测试图像。我这样编码: load net.mat; load features.mat; testInputs = Features'; out = sim(net,testInputs); [dummy, I]=max(out); I的值用于检查硬币类型。

我的项目是识别古钱币。我正在使用Matlab。我已经有了一个包含输入和输出的功能文件。我已经使用newff训练了3种类型的硬币,网络已经保存。对于这三种类型的硬币,我使用01、10和11作为目标。现在我想用那个经过训练的网络进行测试。我也有测试图像。我这样编码:

load net.mat;
load features.mat;
testInputs = Features';
out = sim(net,testInputs);
[dummy, I]=max(out);
I的值用于检查硬币类型。如果I是1,那么类型1,如果2,那么类型2,如果3,那么类型3。我说得对吗?我硬编码了这些1,2,3值,因为我给出的目标是01,10和11

if (I == 2)
    fprintf('Type1\n');
elseif (I == 1)
    fprintf('Type2\n');
elseif (I == 3)
    fprintf('Type3\n');
else
    fprintf('undefined\n');
end
虽然现在我输入了3种类型的测试硬币图像,但它要么显示1,要么显示2,表示值I,而不是3。即使我使用用于训练的同一组图像,它也会为值I提供1或2


你能帮我一下吗?

max的第二个参数将给出输出更高的神经元的指数。如果你只有两个神经元,如果你的目标是[0,1]、[1,0]和[1,1],注意每个目标上只有两个元素,那么就没有办法从最大值中得到3。你应该尝试[0,0,1]、[0,1,0]和[1,0,0]


一个旁注,如果你使用TANSIG作为神经元的激活函数,考虑在目标上使用-1而不是0,这样你就可以更好地利用非线性。类似于[-1,-1,1],-1,1,-1],[1,-1,-1]。

看看权重矩阵,我忘了如何访问它,并确保您的网络没有固定在局部最小值上,第三个的权重为零。我是matlab新手。你能再给我解释一下吗?我不明白你上面说的话。当我训练我的数据集时,对于3种类型的硬币,我将[0,1]、[1,0]和[1,1]作为目标。我不能这样给你吗?训练后,当我将训练数据与我使用的测试图像进行比较时,out=simnet,testInputs;[dummy,I]=maxout;然后如果I==2fprintf'Type1\n';elseif I==1 fprintf'Type2\n';elseif I==3 fprintf'Type3\n';else fprintf'未定义\n';终止这是不对的吗?我总是返回1或2。权重矩阵包含各个单元之间连接的强度。如果您不熟悉,应该阅读Matlab文档。然后,您可以看到第三个单元的输入在多大程度上影响了结果。请参阅和。抱歉,另一个的编辑时间已用完。可以。非常感谢。我会通过的。