pytorch-seq2seq-example

我要开发同款
匿名用户2021年12月24日
48阅读
开发技术Python
所属分类人工智能、自然语言处理
授权协议Readme

作品详情

BatchedSeq2SeqExampleBasedontheseq2seq-translation-batched.ipynbfrompractical-pytorch,butmoreextrafeatures.

ThisexamplerunsgrammaticalerrorcorrectiontaskwherethesourcesequenceisagrammaticallyerroneuousEnglishsentenceandthetargetsequenceisangrammaticallycorrectEnglishsentence.Thecorpusandevaluationscriptcanbedownloadat:https://github.com/keisks/jfleg.

ExtrafeaturesCleanercodebaseVerydetailedcommentsforlearnersImplementPytorchnativedatasetanddataloaderforbatchingCorrectlyhandlethehiddenstatefrombidirectionalencoderandpasttothedecoderasinitialhiddenstate.Fullybatchedattentionmechanismcomputation(onlyimplementgeneralattentionbutit'ssufficient).Note:Theoriginalcodestillusesfor-looptocompute,whichisveryslow.SupportLSTMinsteadofonlyGRUSharedembeddings(encoder'sinputembeddinganddecoder'sinputembedding)PretrainedGloveembeddingFixedembeddingTieembeddings(decoder'sinputembeddinganddecoder'soutputembedding)TensorboardvisualizationLoadandsavecheckpointReplaceunknownwordsbyselectingthesourcetokenwiththehighestattentionscore.(Translation)Cons

Comparingtothestate-of-the-artseq2seqlibrary,OpenNMT-py,therearesomestuffsthataren'toptimizedinthiscodebase:

UseCuDNNwhenpossible(alwaysonencoder,ondecoderwheninput_feed=0)Alwaysavoidindexing/loopsandusetorchprimitives.Whenpossible,batchsoftmaxoperationsacrosstime.(thisisthesecondcomplicatedpartofthecode)Batchinferenceandbeamsearchfortranslation(thisisthemostcomplicatedpartofthecode)HowtospeedupRNNtraining?

SeveralwaystospeedupRNNtraining:

BatchingStaticpaddingDynamicpaddingBucketingTruncatedBPTT

See"SequenceModelsandtheRNNAPI(TensorFlowDevSummit2017)"forunderstandingthosetechniques.

YoucanusetorchtextorOpenNMT'sdataiteratorforspeedingupthetraining.Itcanbe7xfaster!(ex:7hoursforanepoch->1hour!)

Acknowledgement

ThankstotheauthorofOpenNMT-py@srushforansweringthequestionsforme!Seehttps://github.com/OpenNMT/OpenNMT-py/issues/552

声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论