主要内容

inputLayer

R2026b

输入层

自 R2023b 起

    描述

    输入层将未格式化数据或具有自定义格式的数据输入到神经网络。

    创建对象

    描述

    layer = inputLayer(inputSize) 创建用于未格式化数据的输入层 (自 R2025a 起)。

    layer = inputLayer(inputSize,inputFormat) 创建输入层并指定自定义数据格式。

    示例

    layer = inputLayer(___,Name=Value) 除支持上述语法中输入参量的任意组合外,还可以使用一个或多个名称-值参量来指定选项。例如,Name="in" 指定该层的名称为 "in"。

    输入参量

    全部展开

    输入的大小,指定为由正整数或 NaN 组成的行向量。

    对于支持批量维度或时间维度为可变大小的网络,请将对应维度的大小指定为 NaN。

    此参量设置 InputSize 属性。

    示例: [224 224 3]

    数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

    数据维度的描述,指定为字符向量或字符串标量。

    深度学习数据格式是字符串,其中每个字符描述对应数据维度的类型。这些字符是:

    • "S" - 空间

    • "C" - 通道

    • "B" - 批量

    • "T" - 时间

    • "U" - 未指定

    例如,假设您有一个表示一批序列的数组,其中第一个、第二个和第三个维度分别对应于通道、观测值和时间步。您可以将该数据描述为具有格式 "CBT"(通道、批量、时间)。

    如果 InputFormat 为 "",则该层会直接将未格式化数据传递给神经网络。请确保后续层支持未格式化输入数据 (自 R2025a 起)。

    对于层输入格式,您可以指定多个标注为 "S" 或 "U" 的维度。标签 "C"、"B" 和 "T" 最多可以使用一次。当维数大于 2 时,输入格式中最右边的 "U" 维度对应的输入大小必须大于 1。

    有关详细信息,请参阅Deep Learning Data Formats。

    此参量设置 InputFormat 属性。

    示例: "SSCB"

    示例: "SCBT"

    示例: "TCB"

    数据类型: char | string

    名称-值参数

    全部展开

    将可选参量对组指定为 Name1=Value1,...,NameN=ValueN,其中 Name 是参量名称,Value 是对应的值。名称-值参量必须出现在其他参量之后,但对各个参量对组的顺序没有要求。

    示例: inputLayer([3 1],"CB",Name="in") 创建一个名为 "in" 的输入层。

    自 R2026b 起

    输入验证函数,指定为以下选项之一:

    • "auto" - 检查输入数据的大小和格式是否与层配置匹配。

    • 语法为 f(X,info) 的函数句柄 - 在训练和预测期间调用指定的函数。如果输入数据无效,函数会抛出错误。

    如果您指定自定义函数,则参量 X 是输入数据,指定为格式化的 dlarray 对象。参量 info 是一个结构体,包含字段 InputSize 和 InputFormat,其中包含对应的层属性值。

    例如,您可以使用此函数检查层输入是否仅包含正值:

    function inputMustBePositive(X,info)
    
    if any(X<=0,"all")
        error("Input must be positive.")
    end
    
    end
    要使用此函数进行验证,请将此函数包含在脚本中,或将其保存为文件 inputMustBePositive.m,并将参量设置为 @inputMustBePositive。

    此参量设置 InputValidationFcn 属性。

    数据类型: char | string | function_handle

    层名称,指定为字符向量或字符串标量。对于 Layer 数组输入,trainnet 和 dlnetwork 函数会自动为未命名层指定名称。

    此参量设置 Name 属性。

    数据类型: char | string

    属性

    全部展开

    输入

    此 属性 为只读。

    此属性在创建对象后是只读的。要设置此属性,请在创建 InputLayer 对象时使用对应的位置输入参量。

    输入的大小,存储为由正整数或 NaN 组成的行向量。

    对于支持批量维度或时间维度为可变大小的网络,对应值为 NaN。

    数据类型: double

    此属性在创建对象后是只读的。要设置此属性,请在创建 InputLayer 对象时使用对应的位置输入参量。

    数据维度的描述,存储为字符向量。

    深度学习数据格式是字符串,其中每个字符描述对应数据维度的类型。这些字符是:

    • "S" - 空间

    • "C" - 通道

    • "B" - 批量

    • "T" - 时间

    • "U" - 未指定

    例如,假设您有一个表示一批序列的数组,其中第一个、第二个和第三个维度分别对应于通道、观测值和时间步。您可以将该数据描述为具有格式 "CBT"(通道、批量、时间)。

    如果 InputFormat 为 "",则该层会直接将未格式化数据传递给神经网络。请确保后续层支持未格式化输入数据 (自 R2025a 起)。

    有关详细信息,请参阅Deep Learning Data Formats。

    数据类型: char

    自 R2026b 起

    此属性在创建对象后是只读的。要设置此属性,请在创建 InputLayer 对象时使用对应的名称-值参量。

    输入验证函数,存储为以下选项之一:

    • 'auto' - 检查输入数据的大小和格式是否与层配置匹配。

    • 语法为 f(X,info) 的函数句柄 - 在训练和预测期间调用指定的函数。如果输入数据无效,函数会抛出错误。

    数据类型: char | function_handle

    层

    层名称,指定为字符向量或字符串标量。对于 Layer 数组输入,trainnet 和 dlnetwork 函数会自动为名称为 "" 的层分配一个新的唯一名称。

    InputLayer 对象将此属性存储为字符向量。

    数据类型: char | string

    此 属性 为只读。

    层输入数目。该层没有输入。

    数据类型: double

    此 属性 为只读。

    层的输入名称。该层没有输入。

    数据类型: cell

    此 属性 为只读。

    层的输出数,表示为 1。此层只有一个输出。

    数据类型: double

    此 属性 为只读。

    输出名称,表示为 {'out'}。此层只有一个输出。

    示例

    全部折叠

    创建一个用于输入一维图像数据(三维数据,维度分别对应于空间、通道和观测值)的输入层。指定数据具有三个通道,图像高度大小为 64。指定批量维度可变。

    inputSize = [64 3 NaN];
    inputFormat = "SCB";
    layer = inputLayer(inputSize,inputFormat)
    layer = 
      InputLayer with properties:
    
                      Name: ''
                 InputSize: [64 3 NaN]
               InputFormat: 'SCB'
        InputValidationFcn: 'auto'
    
    

    将该输入层包含在一个网络中。

    layers = [
        inputLayer([64 3 NaN],"SCB")
        convolution1dLayer(5,32)
        batchNormalizationLayer
        reluLayer
        fullyConnectedLayer(10)
        softmaxLayer];

    创建一个用于输入时空数据(四维数据,维度分别对应于空间、通道、时间和观测值)的输入层。指定数据具有三个通道,空间大小为 64。指定批量和时间维度可变。

    inputSize = [64 3 NaN NaN];
    inputFormat = "SCBT";
    layer = inputLayer(inputSize,inputFormat)
    layer = 
      InputLayer with properties:
    
                      Name: ''
                 InputSize: [64 3 NaN NaN]
               InputFormat: 'SCBT'
        InputValidationFcn: 'auto'
    
    

    将该输入层包含在一个网络中。

    layers = [
        inputLayer([64 3 NaN NaN],"SCBT")
        convolution1dLayer(5,32)
        batchNormalizationLayer
        reluLayer
        globalAveragePooling1dLayer
        flattenLayer
        lstmLayer(100,OutputMode="last")
        fullyConnectedLayer(10)
        softmaxLayer];

    算法

    全部展开

    扩展功能

    全部展开

    版本历史记录

    在 R2023b 中推出

    全部展开