Matlab中的前馈神经网络分类

Posted

技术标签:

【中文标题】Matlab中的前馈神经网络分类【英文标题】:Feedforward neural network classification in Matlab 【发布时间】:2016-08-04 03:05:36 【问题描述】:

我有两个高斯分布样本,一个高斯包含 10,000 个样本,另一个高斯也包含 10,000 个样本,我想用这些样本训练一个前馈神经网络,但我不知道我必须接受多少样本以获得最优决策边界。 这是代码,但我不知道确切的解决方案,输出很奇怪。

x1 = -49:1:50;
x2 = -49:1:50;
[X1, X2] = meshgrid(x1, x2);
Gaussian1 = mvnpdf([X1(:) X2(:)], mean1, var1);// for class A
Gaussian2 = mvnpdf([X1(:) X2(:)], mean2, var2);// for Class B
net = feedforwardnet(10);
G1 = reshape(Gaussian1, 10000,1);
G2 = reshape(Gaussian2, 10000,1);
input = [G1, G2];
output = [0, 1];
net = train(net, input, output);

当我运行代码时,它给了我奇怪的结果。 如果代码不正确,请有人建议我,以便我可以得到这两个分布的决策边界。

【问题讨论】:

我不清楚你真正想要什么。你能更具体地描述一下你的训练集吗? 简单来说,我想找到这个前馈神经网络的准确率,我想为这个高斯分布画一个这个分类器的决策边界。 :) 为了绘制决策边界,这篇文章可能会有所帮助:***.com/questions/33502666/… 【参考方案1】:

我很确定输入必须是高斯分布(而不是 x 坐标)。实际上,NN 必须了解您感兴趣的现象本身(高斯分布)与输出标签之间的关系,而不是包含现象和标签的空间之间的关系。此外,如果您选择x 坐标,NN 将尝试理解后者与输出标签之间的某种关系,但x 可能是恒定的(即,输入数据甚至可能完全相同,因为您可以在x 坐标的相同范围内具有非常不同的高斯分布,仅改变均值和方差)。因此,NN 最终会感到困惑,因为相同的输入数据可能有更多的输出标签(而且您不希望发生这种情况!!!)。 我希望我是有帮助的。

P.S.:出于疑问,我必须告诉你,如果你有一个小的训练集,NN 不能很好地拟合数据。此外,不要忘记使用交叉验证技术验证您的数据模型(一个好的经验法则是使用 20% 的训练集用于交叉验证集,另外 20% 的相同训练集用于测试集,因此只使用剩余 60% 的训练集来训练模型)。

【讨论】:

确实,我将使用高斯分布作为输入并将标签 [0,1] 作为输出。但是我还有另一个问题,我的第一个高斯分布有 100x100 = 10,000 个样本和另一个高斯分布还有 100x100 = 10,000 个样本,总样本 20,000 个,我不知道要在这两个类之间做出合理的决定,我必须采取多少样本。 如果我理解错误,请纠正我:你有一个多元正态分布(或多维高斯),你想研究后一个高斯的概率分布与某些类的关系。正确的?在这种情况下,您希望 100x100 矩阵成为假设函数的特征。因此,为什么要在这个只有两个示例的训练集上使用 NN? 我有两个高斯 G1 和 G2 并使用贝叶斯定理计算了这些高斯的后验概率,然后绘制这些分布之间的决策边界,现在我的下一个任务是使用相同的高斯分布样本并将这些应用于前馈神经网络并比较结果。我希望这能清除问题的含义。 你已经计算了高斯中所有样本的后验概率,得到一个 G1 的后验概率和另一个 G2 的后验概率,对吗? 是的,在这种情况下,先验概率相同(样本数量相等),那么我认为类条件概率将与后验概率相同,之后我使用了判别函数找到决策边界,但我被分配了使用前馈神经网络并比较结果的任务。这是一个最好的例子:mathworks.com/help/nnet/ref/…,我可以给我你的个人电子邮件,以便我可以解释这个问题的更多细节,我将非常感谢,因为这个截止日期是明天。

以上是关于Matlab中的前馈神经网络分类的主要内容,如果未能解决你的问题,请参考以下文章

前馈全连接神经网络| matlab

PNN神经网络(Matlab)

树叶分类基于matlab GUI BP神经网络植物叶片分类含Matlab源码 023期

树叶分类基于BP神经网络植物叶片识别分类matlab源码含GUI

如何在 Matlab 中使用经过训练的神经网络在真实系统中进行分类

MATLAB中的神经网络训练失败