Documentação
Esta é uma estrutura para os modelos de sequência para sequência (SEQ2SEQ) implementados em Pytorch. A estrutura modularou e extensível componentes para modelos SEQ2SEQ, treinamento e inferência, pontos de verificação etc. Esta é uma liberação alfa. Agradecemos qualquer tipo de feedback ou contribuição.
O SEQ2SEQ é um campo em evolução rápido, com novas técnicas e arquiteturas sendo publicadas com frequência. O objetivo desta biblioteca é facilitar o desenvolvimento de tais técnicas e aplicações. Ao melhorar constantemente a qualidade do código e da documentação, nos concentraremos nos seguintes itens:
Este pacote requer Python 2.7 ou 3.6. Recomendamos a criação de um novo ambiente virtual para este projeto (usando o VirtualEnv ou o CONDA).
pip install numpy (consulte aqui o problema da instalação do Numpy).Atualmente, suportamos apenas a instalação do código -fonte usando o SetupTools. Confira o código -fonte e execute os seguintes comandos:
pip install -r requirements.txt
python setup.py install
Se você já teve uma versão do Pytorch instalada no seu sistema, verifique se o pacote de tocha ativo é pelo menos a versão 0.1.11.
# Run script to generate the reverse toy dataset
# The generated data is stored in data/toy_reverse by default
scripts/toy.sh
TRAIN_PATH=data/toy_reverse/train/data.txt
DEV_PATH=data/toy_reverse/dev/data.txt
# Start training
python examples/sample.py --train_path $TRAIN_PATH --dev_path $DEV_PATH
Levará cerca de 3 minutos para treinar na CPU e menos de 1 minuto com um Tesla K80. Depois que o treinamento estiver concluído, você será solicitado a inserir uma nova sequência para traduzir e o modelo imprimirá sua previsão (use Ctrl-C para encerrar). Experimente o exemplo abaixo!
Input: 1 3 5 7 9
Expected output: 9 7 5 3 1 EOS
Os pontos de verificação são organizados por experimentos e registros de data e hora, como mostrado na seguinte estrutura de arquivo
experiment_dir
+-- input_vocab
+-- output_vocab
+-- checkpoints
| +-- YYYY_mm_dd_HH_MM_SS
| +-- decoder
| +-- encoder
| +-- model_checkpoint
O script de amostra por padrão salva pontos de verificação na pasta experiment do diretório raiz. Veja os usos do código de amostra para obter mais opções, incluindo a retomada e o carregamento dos pontos de verificação.
Se você tiver alguma dúvida, relatórios de bugs e solicitações de recursos, abra um problema no GitHub. Para discussões ao vivo, vá ao nosso lobby Gitter.
Agradecemos qualquer tipo de feedback ou contribuição. Sinta -se à vontade para prosseguir com pequenos problemas, como correções de bugs, melhoria da documentação. Para grandes contribuições e novos recursos, discuta com os colaboradores em questões correspondentes.
Estamos usando ciclos de liberação de 4 semanas, onde durante cada ciclo as alterações serão empurradas para o ramo develop e finalmente se fundirão para o ramo master no final de cada ciclo.
Configuramos o ambiente de desenvolvimento usando o Vagrant. Execute vagrant up com o nosso 'VagrantFile' para começar.
As ferramentas a seguir são necessárias e instaladas no ambiente de desenvolvimento por padrão:
A qualidade e a manutenção do projeto são garantidas por testes abrangentes. Incentivamos os testes de unidade de escrita e os testes de integração ao contribuir com novos códigos.
Localmente, execute nosetests no diretório raiz do pacote para executar testes de unidade. Usamos o Travisci para exigir que uma solicitação de tração precise passar em todos os testes de unidade para serem elegíveis para se fundir. Consulte a configuração do Travis para obter mais informações.
Seguimos o PEP8 para o estilo de código. Especialmente o estilo de Docstrings é importante para gerar documentação.
# Python syntax errors or undefined names
flake8 . --count --select=E901,E999,F821,F822,F823 --show-source --statistics
# Style checks
flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics