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
...
}