2016-05-16 4 views
5

Sto utilizzando un'operazione embedding_lookup per generare rappresentazioni vettoriali dense per ciascun token nel mio documento che vengono alimentate a una rete neurale convoluzionale (l'architettura di rete è simile a quella in a WildML article).La tabella di ricerca incorporata non maschera il valore di riempimento

Tutto funziona correttamente ma quando si alza il mio documento inserendo un valore di riempimento in esso, la ricerca incorporata genera anche un vettore per questo token. Penso che questo approccio potrebbe alterare i risultati nel compito di classificazione. Quello che voglio ottenere è qualcosa di simile a ciò che fa Torch LookupTableMaskZero.

1) È corretto quello che voglio fare?

2) È già implementato qualcosa di simile?

3) In caso contrario, come posso mascherare il valore di riempimento per impedire la generazione del vettore corrispondente?

Grazie in anticipo,

Alessandro

+0

Hai mai trovato la soluzione? – Shatu

risposta

2

@Alessandro Suglia Penso che questa funzione è utile, purtroppo tf non supporta al momento. Una soluzione alternativa per ottenere lo stesso risultato ma è più lenta è la ricerca due volte. come qui di seguito

lookup_result = tf.nn.embedding_lookup(emb, index) 
    masked_emb = tf.concat(0, [tf.zeros([1, 1]), 
          tf.ones([emb.get_shape()[0] - 1, 1]) 
    mask_lookup_result = tf.nn.embedding_lookup(masked_emb, index) 
    lookup_result = tf.mul(lookup_result, mask_lookup_result) 
-1

sembra che nel modello di RNN, non abbiamo bisogno di mascherare il valore imbottitura fintanto che mascherare la perdita (la perdita è lo stesso, non importa se siamo mascherare l'imbottitura di ingresso, ho la risultato eseguendo un codice di prova)!

Ovviamente, lo zero padding può accelerare il calcolo per lo zero multiplo quando il parametro sequence_len in tf.nn.dynamic_rnn non viene passato.

Al termine, se il modello interagisce in modo interattivo tra una sequenza (ad esempio CNN, la convoluzione può influire sull'incorporamento del padding), è necessario l'inserimento di zero padding.

Problemi correlati