Matlab中的前馈神经网络分类



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

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);

当我运行代码时,它给了我奇怪的结果。如果代码不正确,有人能建议我这样我就可以得到这两个发行版的决策边界吗。

我很确定输入必须是高斯分布(而不是x坐标)。事实上,神经网络必须理解你感兴趣的现象本身(高斯分布)和输出标签之间的关系,而不是包含这些现象的空间和标签之间的联系。此外,如果您选择x坐标,NN将试图理解后者和输出标签之间的某种关系,但x是潜在的常数(即,输入数据可能完全相同,因为在x坐标的相同范围内,您可能具有非常不同的高斯分布,只会改变均值和方差)。因此,NN最终会被混淆,因为相同的输入数据可能有更多的输出标签(你不希望这种情况发生!!)
我希望我能帮上忙

附言:为了怀疑起见,我不得不告诉你,如果你有一个小的训练集,NN就不能很好地拟合数据。此外,不要忘记使用交叉验证技术来验证数据模型(一个好的经验法则是将20%的训练集用于交叉验证集,将20%的相同训练集用于测试集,因此只使用剩余的60%训练集来训练模型)。

最新更新