主要内容

geluLayer

高斯误差线性单元 (GELU) 层

自 R2022b 起

    说明

    高斯误差线性单元 (GELU) 层根据高斯分布下的概率对输入进行加权。

    该运算由下式给出

    GELU(x)=x2(1+erf(x2)),

    其中 erf 表示误差函数。

    创建对象

    描述

    layer = geluLayer 返回一个 GELU 层。

    示例

    layer = geluLayer(Name=Value) 使用名称-值参量设置可选的 ApproximationName 属性。例如,geluLayer(Name="gelu") 创建一个名为 "gelu" 的 GELU 层。

    属性

    全部展开

    GELU

    GELU 运算的逼近方法,指定为以下值之一:

    • 'none' - 不使用逼近。

    • 'tanh' - 使用下式逼近底层误差函数

      erf(x2)tanh(2π(x+0.044715x3)).

    提示

    在 MATLAB® 中,计算 tanh 逼近通常不太准确,并且对于较大的输入大小,比不使用逼近计算 GELU 激活更慢。当需要重现使用此逼近的模型(例如 BERT 和 GPT-2)时,请使用 tanh 逼近。

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

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

    数据类型: char | string

    此 属性 为只读。

    层的输入数,存储为 1。此层只接受一个输入。

    数据类型: double

    此 属性 为只读。

    输入名称,存储为 {'in'}。此层只接受一个输入。

    数据类型: cell

    此 属性 为只读。

    层的输出数,存储为 1。此层只有一个输出。

    数据类型: double

    此 属性 为只读。

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

    数据类型: cell

    示例

    全部折叠

    创建一个 GELU 层。

    layer = geluLayer
    layer = 
      GELULayer with properties:
    
                 Name: ''
    
       Hyperparameters
        Approximation: 'none'
    
    

    Layer 数组中包含一个 GELU 层。

    layers = [
        imageInputLayer([28 28 1])
        convolution2dLayer(5,20)
        geluLayer
        maxPooling2dLayer(2,Stride=2)
        fullyConnectedLayer(10)
        softmaxLayer]
    layers = 
      6×1 Layer array with layers:
    
         1   ''   Image Input       28×28×1 images with 'zerocenter' normalization
         2   ''   2-D Convolution   20 5×5 convolutions with stride [1  1] and padding [0  0  0  0]
         3   ''   GELU              GELU
         4   ''   2-D Max Pooling   2×2 max pooling with stride [2  2] and padding [0  0  0  0]
         5   ''   Fully Connected   10 fully connected layer
         6   ''   Softmax           softmax
    

    算法

    全部展开

    参考

    [1] Hendrycks, Dan, and Kevin Gimpel. "Gaussian error linear units (GELUs)." Preprint, submitted June 27, 2016. https://arxiv.org/abs/1606.08415

    扩展功能

    全部展开

    C/C++ 代码生成
    使用 MATLAB® Coder™ 生成 C 代码和 C++ 代码。

    GPU 代码生成
    使用 GPU Coder™ 为 NVIDIA® GPU 生成 CUDA® 代码。

    版本历史记录

    在 R2022b 中推出

    全部展开