Os principais blocos de construção são arquiteturas de decodificadores de codificadores RNN e mecanismo de atenção.
O pacote foi amplamente implementado usando os módulos mais recentes (1.2) tf.contrib.seq2seq
O pacote suporta
Para pré -processar dados paralelos brutos de sample_data.src e sample_data.trg , basta executar
cd data /
. / preprocess . sh src trg sample_data $ { max_seq_len }A execução do código acima executa as etapas de pré -processamento amplamente utilizadas para a tradução da máquina (MT).
Para treinar um modelo SEQ2SEQ,
$ python train . py -- cell_type 'lstm'
-- attention_type 'luong'
-- hidden_units 1024
-- depth 2
-- embedding_size 500
-- num_encoder_symbols 30000
-- num_decoder_symbols 30000 ...Para executar o modelo treinado para decodificar,
$ python decode . py -- beam_width 5
-- decode_batch_size 30
-- model_path $PATH_TO_A_MODEL_CHECKPOINT ( e . g . model / translate . ckpt - 100 )
-- max_decode_step 300
-- write_n_best False
-- decode_input $PATH_TO_DECODE_INPUT
-- decode_output $PATH_TO_DECODE_OUTPUT
If --beam_width=1 , a decodificação gananciosa é realizada a cada passo do tempo.
Params de dados
--source_vocabulary : caminho para o vocabulário de origem--target_vocabulary : caminho para o vocabulário alvo--source_train_data : caminho para dados de treinamento de origem--target_train_data : caminho para direcionar dados de treinamento--source_valid_data : caminho para dados de validação de origem--target_valid_data : caminho para direcionar dados de validaçãoParams de rede
--cell_type : célula RNN para usar para codificador e decodificador (padrão: LSTM)--attention_type : mecanismo de atenção (Bahdanau, Luong), (Padrão: Bahdanau)--depth : Número de unidades ocultas para cada camada no modelo (Padrão: 2)--embedding_size : Incorporação de dimensões das entradas do codificador e decodificador (Padrão: 500)--num_encoder_symbols : Tamanho do vocabulário da fonte a ser usado (padrão: 30000)--num_decoder_symbols : Tamanho do vocabulário de destino a ser usado (padrão: 30000)--use_residual : use a conexão residual entre camadas (padrão: true)--attn_input_feeding : Use o método de alimentação de entrada no decodificador atencional (Luong et al., 2015) (padrão: true)--use_dropout : use o abandono na saída da célula RNN (padrão: true)--dropout_rate : Probabilidade de abandono para saídas de células (0,0: sem abandono) (Padrão: 0.3)Parâmetros de treinamento
--learning_rate : número de unidades ocultas para cada camada no modelo (padrão: 0,0002)--max_gradient_norm : gradientes de clipe para esta norma (padrão 1.0)--batch_size : tamanho do lote--max_epochs : épocas máximas de treinamento--max_load_batches : Número máximo de lotes para preencher ao mesmo tempo.--max_seq_length : comprimento máximo de sequência--display_freq : exibir status de treinamento toda iteração--save_freq : salvar o modelo de verificação do modelo a cada iteração--valid_freq : Avalie o modelo toda essa iteração: válida_data necessária--optimizer : Optimizer for Training: (Adadelta, Adam, RMSProp) (Padrão: Adam)--model_dir : caminho para salvar os pontos de verificação do modelo--model_name : Nome do arquivo usado para pontos de verificação do modelo--shuffle_each_epoch : Shuffle Training DataSet para cada época (padrão: true)--sort_by_length : classifique os minibatches pré-buscados por seus comprimentos de sequência alvo (padrão: true)Decodificando params
--beam_width : largura do feixe usada no BeamSearch (padrão: 1)--decode_batch_size : Tamanho do lote usado na decodificação--max_decode_step : limite máximo de etapa de tempo na decodificação (padrão: 500)--write_n_best : write beamsearch n-best list (n = feam_width) (padrão: false)--decode_input : Caminho do arquivo de entrada para decodificar--decode_output : Saída do caminho do arquivo da saída de decodificaçãoParams de tempo de execução
--allow_soft_placement : permitir a colocação suave do dispositivo--log_device_placement : colocação de logs de operações em dispositivos A implementação é baseada nos seguintes projetos:
Para quaisquer comentários e feedbacks, envie -me um email para [email protected] ou abra um problema aqui.