Non riesco a capire perché l'interruzione funzioni come questo in tensorflow. Il blog di CS231n dice che, "dropout is implemented by only keeping a neuron active with some probability p (a hyperparameter), or setting it to zero otherwise."
Inoltre è possibile vedere questo dall'immagine (Tratto da stesso sito) Perché l'input è ridimensionato in tf.nn.dropout in tensorflow?
Dal sito tensorflow, With probability keep_prob, outputs the input element scaled up by 1/keep_prob, otherwise outputs 0.
Ora, il motivo per cui l'elemento di input viene scalato da 1/keep_prob
? Perché non mantenere l'elemento di input così com'è con probabilità e non scalarlo con 1/keep_prob
?
Mi dispiace, sono nuovo in questo concetto. Forse mi manca qualcosa di ovvio. Puoi dare una spiegazione più semplice? Intendo perché 1/keep_prob? Quale sarà la differenza se uso keep_prob vs 1/keep_prob. A proposito, capisco dalla tua spiegazione perché il codice diventa più semplice. –
L'obiettivo è di mantenere la somma prevista dei pesi lo stesso — e quindi il valore atteso delle attivazioni lo stesso — indipendentemente da 'keep_prob'. Se (quando si fa il dropout) disabilitiamo un neurone con probabilità 'keep_prob', dobbiamo moltiplicare gli altri pesi di' 1./keep_prob' per mantenere questo valore lo stesso (in attesa). Altrimenti, ad esempio, la non-linearità produrrebbe un risultato completamente diverso a seconda del valore di 'keep_prob'. – mrry