【发布时间】:2012-01-13 02:56:25
【问题描述】:
我的项目是识别古钱币。我正在使用 Matlab。我已经有一个包含输入和输出的功能文件。我已经使用 newff 训练了 3 种类型的硬币,并且已经保存了 net。对于三种类型的硬币,我使用 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 种类型的测试硬币图像,但对于值 I,它要么显示 1 要么显示 2。但不是 3。即使我使用用于训练的同一组图像,它也会为值 I 提供 1 或 2。
你能帮帮我吗?
【问题讨论】:
-
查看权重矩阵(我忘了如何访问它)并确保您的网络没有以零作为第三个权重的局部最小值。
-
我是 matlab 新手。你能再解释一下吗?我无法理解你上面所说的。当我训练我的数据集时,对于 3 种类型的硬币,我将 [0,1]、[1,0] 和 [1,1] 作为目标。我不能这样给吗?训练后,当我将训练数据与我使用的测试图像进行比较时,out = sim(net,testInputs); [假人,我]=max(out);然后 if (I == 2) fprintf('Type1\n'); elseif (I == 1) fprintf('Type2\n'); elseif (I == 3) fprintf('Type3\n');否则 fprintf('未定义\n');结尾。这是不正确的吗?我总是返回 1 或 2。
-
权重矩阵包含各个单元之间连接的“强度”。如果您对此不熟悉,您应该阅读 Matlab 文档。然后,您可以看到第三个单元的输入在多大程度上影响了结果。
-
见Matlab thread 和documentation。抱歉,另一张的编辑时间已用完。
-
没关系。非常感谢。我会过去的。
标签: matlab neural-network sim-card