J'essaye de construire un RNN bidirectionnel avec mécanisme d'attention pour la classification de séquence. J'ai quelques problèmes à comprendre la fonction d'aide. J'ai vu que celui utilisé pour la formation a besoin des entrées du décodeur, mais comme je veux une seule étiquette de la séquence entière, je ne sais pas exactement quelle entrée je devrais donner ici. C'est la structure que j'ai construit jusqu'à présent:Mécanisme d'attention pour la classification de séquence (seq2seq tensorflow r1.1)
# Encoder LSTM cells
lstm_fw_cell = rnn.BasicLSTMCell(n_hidden)
lstm_bw_cell = rnn.BasicLSTMCell(n_hidden)
# Bidirectional RNN
outputs, states = tf.nn.bidirectional_dynamic_rnn(lstm_fw_cell,
lstm_bw_cell, inputs=x,
sequence_length=seq_len, dtype=tf.float32)
# Concatenate forward and backward outputs
encoder_outputs = tf.concat(outputs,2)
# Decoder LSTM cell
decoder_cell = rnn.BasicLSTMCell(n_hidden)
# Attention mechanism
attention_mechanism = tf.contrib.seq2seq.LuongAttention(n_hidden, encoder_outputs)
attn_cell = tf.contrib.seq2seq.AttentionWrapper(decoder_cell,
attention_mechanism, attention_size=n_hidden)
name="attention_init")
# Initial attention
attn_zero = attn_cell.zero_state(batch_size=tf.shape(x)[0], dtype=tf.float32)
init_state = attn_zero.clone(cell_state=states[0])
# Helper function
helper = tf.contrib.seq2seq.TrainingHelper(inputs = ???)
# Decoding
my_decoder = tf.contrib.seq2seq.BasicDecoder(cell=attn_cell,
helper=helper,
initial_state=init_state)
decoder_outputs, decoder_states = tf.contrib.seq2seq.dynamic_decode(my_decoder)
Mon entrée est une séquence [batch_size, sequence_length, n_features] et ma sortie est un vecteur unique avec N classes possibles [de batch_size, n_classes]. Savez-vous ce qui me manque ici ou s'il est possible d'utiliser seq2seq pour la classification des séquences?