我是使用matlab nn库的新手。我正在寻找2级,二进制分类。和documentation一样,我训练了网络。代码outputs = net(inputs)
没有给我类标签,而是给了我一些浮点数。如何获取类标签结果,以便我可以在网格搜索中使用它来优化参数?我正在使用10倍交叉验证。
答案 0 :(得分:1)
执行分类时使用神经网络执行此操作的传统方法是使用one-hot encoding执行此操作。为了便于单热编码,您可以检查哪个神经元给出了最大的响应。无论神经元给你最大的反应是你选择的相关类标签。例如,在你的两个神经元网络中,如果神经元1给你一个0.64的响应,而神经元2给你一个0.36的响应,你提供给神经网络的输入将被归类为标签1,因为神经元1给你最高的响应。
请注意,在“神经网络”工具箱中,每个示例都位于列中,而每个要素位于图层之间的行中。因此,对于输出层,第一神经元的输出在第一行,第二神经元的输出在第二行。
为了便于查找类,我假设您使用的是命令行函数而不是GUI,因为它可以使它更容易:https://www.mathworks.com/help/nnet/gs/classify-patterns-with-a-neural-network.html#f9-26645。如果您遵循本教程,您的工作区中应该有一个名为net
的神经网络。只需通过网络转发示例,然后选择所有列中每行的最大值,以确定每个示例的类。
假设您的培训,验证或测试数据存储在名为inputs
的变量中,您的代码就是这样:
outputs = net(inputs);
[~, classes] = max(outputs, 1);
classes
将是1 x N
数组,其中N
是您提交到网络中的示例总数,其中包含您提供给网络的每个示例的类。