查看单个帖子
旧 2019-12-14, 20:13   #1
poster
高级会员
 
注册日期: 2019-11-21
帖子: 3,006
声望力: 66
poster 正向着好的方向发展
帖子 Matlab-使用经过培训的网络进行测试

我的项目是认识古代硬币。我正在使用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。

你能帮我吗?



回答:

max()的第二个参数将为您提供输出更高的神经元索引。如果您只有两个神经元,而您的目标是[0,1],[1,0]和[1,1](请注意每个目标上只有两个元素),就是这种情况,将无法获得3在那个max()中。您应该尝试[0,0,1],[0,1,0]和[1,0,0]。

附带说明一下,如果您将tansig用作神经元的激活功能,请考虑在目标上使用-1而不是0,以便可以更好地利用非线性。类似于[-1,-1,1],[-1,1,-1],[1,-1,-1]。



更多&回答...
poster 当前离线   回复时引用此帖