Main Content

dropoutLayer

丢弃层

说明

丢弃层以给定的概率将输入元素随机设置为零。

创建对象

描述

layer = dropoutLayer 创建一个丢弃层。

layer = dropoutLayer(probability) 创建一个丢弃层并设置 Probability 属性。

示例

layer = dropoutLayer(___,'Name',Name) 使用名称-值对组和上述语法中的任何参数设置可选的 Name 属性。例如,dropoutLayer(0.4,'Name','drop1') 创建一个丢弃概率为 0.4 且名称为 'drop1' 的丢弃层。用单引号将属性名称引起来。

属性

全部展开

丢弃

丢弃输入元素的概率,指定为小于 1 的非负数。

在训练时,层随机将输入元素设置为由丢弃掩膜 rand(size(X))<Probability 给出的零,其中 X 是层输入,然后按 1/(1-Probability) 缩放其余元素。该运算实际上更改了迭代之间的底层网络架构,有助于防止网络过拟合 [1][2]。数字越大,训练过程中丢弃的元素越多。在预测时,层的输出等于其输入。

对于图像输入,层为每个图像的每个通道应用不同掩膜。对于序列输入,该层对每个序列的每个时间步应用不同丢弃掩膜。

示例: 0.4

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

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

数据类型: char | string

此 属性 为只读。

层的输入数,返回为 1。此层只接受一个输入。

数据类型: double

此 属性 为只读。

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

数据类型: cell

此 属性 为只读。

层的输出数,返回为 1。此层只有一个输出。

数据类型: double

此 属性 为只读。

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

数据类型: cell

示例

全部折叠

创建一个名为 'drop1' 的丢弃层。

layer = dropoutLayer('Name','drop1')
layer = 
  DropoutLayer with properties:

           Name: 'drop1'

   Hyperparameters
    Probability: 0.5000

Layer 数组中包含一个丢弃层。

layers = [ ...
    imageInputLayer([28 28 1])
    convolution2dLayer(5,20)
    reluLayer
    dropoutLayer
    fullyConnectedLayer(10)
    softmaxLayer
    classificationLayer]
layers = 
  7x1 Layer array with layers:

     1   ''   Image Input             28x28x1 images with 'zerocenter' normalization
     2   ''   2-D Convolution         20 5x5 convolutions with stride [1  1] and padding [0  0  0  0]
     3   ''   ReLU                    ReLU
     4   ''   Dropout                 50% dropout
     5   ''   Fully Connected         10 fully connected layer
     6   ''   Softmax                 softmax
     7   ''   Classification Output   crossentropyex

算法

全部展开

参考

[1] Srivastava, Nitish, Geoffrey Hinton, Alex Krizhevsky, Ilya Sutskever, and Ruslan Salakhutdinov. "Dropout: A Simple Way to Prevent Neural Networks from Overfitting." The Journal of Machine Learning Research 15, no. 1 (January 1, 2014): 1929–58

[2] Krizhevsky, Alex, Ilya Sutskever, and Geoffrey E. Hinton. "ImageNet Classification with Deep Convolutional Neural Networks." Communications of the ACM 60, no. 6 (May 24, 2017): 84–90. https://doi.org/10.1145/3065386

扩展功能

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

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

版本历史记录

在 R2016a 中推出