【问题标题】:Prediction after training a neural network matlab训练神经网络matlab后的预测
【发布时间】:2017-08-14 21:45:12
【问题描述】:
我是使用 matlab nn 库的新手。我正在寻找 2 类二进制分类。和documentation 一样,我已经训练了网络。 codeoutputs = net(inputs) 没有给我类标签,而是给了我一些浮点数。如何获取类标签结果,以便在网格搜索中使用它来优化参数?我正在使用 10 折交叉验证。
【问题讨论】:
标签:
matlab
machine-learning
neural-network
【解决方案1】:
在执行分类时使用神经网络执行此操作的传统方法是使用one-hot encoding 执行此操作。为了促进 one-hot 编码,您检查哪个神经元给您最大的响应。无论神经元给你最大的反应是你会选择的相关类别标签。例如,在您的两个神经元网络中,如果神经元 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 是您提交到网络的示例总数,其中包含您提供给网络的每个示例的类。