使用Matlab的深度学习工具箱进行多输入网络培训

时间:2020-03-25 10:36:45

标签: matlab deep-learning

我想使用其深度学习工具箱中的trainNetwork函数在Matlab中用5个输入图像训练卷积神经网络。目前,我的训练数据集中有一个combinedDatastore对象(ds),带有5个输入(图像)。使用trainNetwork(ds, lgraph, options)时出现以下错误:

Error using trainNetwork (line 165)
Invalid network.

Caused by:
    Network: Too many input layers. The network must have one input layer.
    Detected input layers:
        layer 'imageinput3'
        layer 'imageinput1'
        layer 'imageinput2'
        layer 'imageinput5'
        and 1 other layers.

我该如何处理?我正在使用Matlab 2019a。谢谢您的帮助!

1 个答案:

答案 0 :(得分:0)

神经网络必须具有1个输入层。参考MATLAB's documentation,输入图层是由输入图像的大小指定的,而不是您希望网络训练的图像。

查看此示例代码,了解如何创建lgraph。

创建一个图层数组。假设您的图片尺寸为28x28x3。

true

从图层数组创建图层图。 layerGraph依次连接图层中的所有图层。

false

现在,您可以按照以下方式将训练图像传递到trainNetwork:

layers = [
    imageInputLayer([28 28 3],'Name','input')  
    convolution2dLayer(3,16,'Padding','same','Name','conv_1')
    batchNormalizationLayer('Name','BN_1')
    reluLayer('Name','relu_1')];

注意:请确保您的ds看起来像这样,其中每个图像都有其自己的地面真实值。 ds