如何在 MATLAB 中对图像使用自定义神经网络函数



我必须在 Matlab (2-10-2) 中制作一个简单的 3 层神经网络。

我曾在 Matlab 中研究卷积神经网络,并希望将其与简单的神经网络架构进行比较。

我每个类有 14000 张图像,输入端有两个类,输出端有两个类。输入处的图像大小为 56x56=3136。
1)如何制作2-10-2 NN架构。

2)我拥有的图像也是RGB,所以它的56x56x3,所以输入矩阵将是9408?关于输入x如果两个类。对于每个类,x1 的大小为 3161x700,x2 的大小为 9408x700,x输入的最终大小为9408x1400,标签将1x1400

如果你看一下feedforwardnet MATLAB帮助页面,就会发现这个例子:

[x,t] = simplefit_dataset;
net = feedforwardnet(10);
net = train(net,x,t);
view(net)
y = net(x);
perf = perform(net,y,t)

这几乎是你想要的。前馈网可以采用不同隐藏层大小的数组,因此我们可以执行以下操作:

net = feedforwardnet([2 10 2]);

以获得您想要的架构。您无需担心输入图层大小或输出图层大小。它们设置为"0",并根据您在训练期间提供给网络的输入和输出(示例中net)自动设置为正确的大小。在您的情况下,您可以将 56x56 矩阵重塑为 3136x1 矢量:

x = reshape(x,3161,1);

因此,按照上面的示例,确保您的类/目标标签t,相应的输入x,您就可以开始了。

话虽如此,我不会在这些网络之一对图像进行分类。卷积神经网络通常是要走的路。

要将输入数据(x 和 t)拆分为训练集、验证集和测试集,并让训练函数自动处理这样的泛化能力,请在训练前执行以下操作:

net.divideFcn = 'dividerand';
net.divideParam.trainRatio = 0.7;
net.divideParam.valRatio = 0.15;
net.divideParam.testRatio = 0.15;

综合起来,我们有:

[x,t] = simplefit_dataset;
net = feedforwardnet(10);
net.divideFcn = 'dividerand';
net.divideParam.trainRatio = 0.7;
net.divideParam.valRatio = 0.15;
net.divideParam.testRatio = 0.15;
net = train(net,x,t);
view(net)
y = net(x);
perf = perform(net,y,t)

对于 2 类分类问题,单个输出逻辑神经元就足够了。 (2-10-1) 的 NN 架构就足够了。

最新更新