Compartilhar via


Abandono

Função Dropout.

Dropout (x)

Parâmetros

  • x: a entrada para aplicar a função dropout a

Observação: a taxa de abandono não é um parâmetro para essa função, mas, em vez disso, especificada na SGD seção.

Valor Retornado

Dropout() retornará o resultado da operação de abandono aplicada à entrada. O resultado tem as mesmas dimensões tensores que a entrada.

Descrição

A Dropout() operação seleciona aleatoriamente elementos da entrada com uma determinada probabilidade chamada taxa de abandono e os define como 0. Isso tem sido mostrado para melhorar a generalizabilidade dos modelos.

Na implementação do CNTK, os valores restantes que não estão definidos como 0 serão multiplicados (1/ (1 – taxa de abandono)). Dessa forma, os parâmetros de modelo aprendidos com a lista suspensa são diretamente aplicáveis em inferência. (Se isso não tiver sido feito, o usuário teria que dimensioná-los manualmente antes da inferência.)

Para habilitar o abandono em seu treinamento, você também precisa adicionar um parâmetro dropoutRate à SGD seção para definir a taxa de abandono. Isso é feito em SGD uma seção, em vez de um parâmetro para Dropout() si mesmo, a fim de permitir iniciar um treinamento sem dropout e, em seguida, habilitá-lo após algumas épocas, o que é um cenário comum. Para isso, o dropoutRate valor é especificado como um vetor, em que cada valor é para uma época específica.

Ao executar a inferência, a Dropout() operação passa sua entrada sem modificação (é uma operação sem operações).

Exemplo

Veja a seguir uma rede convolucional simples com uma camada suspensa no final:

features = Input{...}
c = ConvolutionalLayer {32, (5:5), activation=ReLU} (features)
p = MaxPoolingLayer {(3:3), stride = (2:2)} (c)
h = DenseLayer {64, activation = ReLU} (p)
d = Dropout (h)
z = LinearLayer {10} (d)

Além disso, você precisa de uma entrada correspondente na SGD seção. O exemplo a seguir define como não usar nenhuma lista suspensa para as três primeiras épocas e, em seguida, continuar com uma taxa de abandono de 50%. Para fins de conveniência, este exemplo usa a sintaxe asterisco (*) para indicar repetição:

SGD = {
    ...
    dropoutRate = 0*3:0.5
    ...
}