您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 信息化管理 > 蓝灯鱼:Tf2.0基于注意力的神经机器翻译训练发布过程
蓝灯鱼:Tf2.0+基于注意力的神经机器翻译训练发布过程本篇是人工智能、机器翻译的干货文章,面向从事人工智能的研发工程师和翻译领域的职业从业者。意在译员能更好的从计算机编程角度理解机器翻译的代码实现过程。同时也和机器翻译开发工程师共同分享源码的快乐。实例是采用当下最新的tensorflow2.0+框架,实现transformer模型Attention(注意力)、MultiHeadAttention(多头注意力)、位置嵌入、掩码、按层提取翻译结果、Flask服务发布。实例代码为完整代码,拷贝即可运行,如果有兴趣获得完整的.py代码请在公众号下留言,获得代码文件。本文章主要是tensorflow2.0官方教程的模拟整理而来,喜欢原版和英文阅读的请参考官方教程。官方为葡萄牙语和英语的翻译,只有训练和预测过程。未给出中文实例、也不能发布应用。实例用1000W数据训练后的结果参考:Theusermayopenawindowduringdriving,forexample.例如,用户可在驾驶期间打开车窗。TheflightsimulatorincludesanEthernetnetwork,aflightcontrolsystem,ahostprocessingsystem,andadispl飞行模拟器包括以太网网络、飞行控制系统、主机处理系统以及显示系统。aysystem.Examplesofthecomputerreadablemediumsinclude,butarenotlimitedto,ROM,RAM,compactdisc(CD)-ROMs,magnetictapes,floppydisks,flashdrives,smartcardsandopticaldatastoragedevices.计算机可读介质的示例包括但不限于ROM、RAM、光盘(CD)-ROM、磁带、软盘、闪存驱动、智能卡和光学数据存储设备。Itistobeunderstoodthatthepresentaspectsarenotlimitedtothedisclosedforms,but,onthecontrary,areintendedtocovervariousmodificationsandequivalentarrangementsincludedwithinthespiritandscopeoftheappendedclaims.应当理解,本方面并不限于公开的形式,而是相反,本发明旨在涵盖所附权利要求的精神和范围内包括的各种修改和等同布置。Therubbercompositionofclaim1,whereinthefillercomprisesatleastoneselectedfromthegroupconsistingofcarbonblack,calciumcarbonate,talc,clay,silica,mica,titaniumdioxide,根据权利要求1所述的橡胶组合物的橡胶组合物,其中,所述加注件包括选自由炭黑、碳酸钙、滑石、粘土、二氧化硅、云母、二氧化钛、石墨、硅灰石和纳米壳组成的组中的至少一种。graphite,wollastonite,andnanosilver.整个过程可以分一下几个步骤:1.创建机器翻译模型训练数据。2.模型编写和超参数设置。3.训练模型。4.发布模型应用服务5.验证机器翻译模型结果公共参数:HyperParams.pyclassHyperParams:#datasource_temp='./data_src/train.tags.en_zh.en50'target_temp='./data_src/train.tags.en_zh.zh50'source_train='./data_src/corpus_raw.en-zh.en'target_train='./data_src/corpus_raw.en-zh.zh'source_test='data_src/test.tags.en_zh.en'target_test='data_src/test.tags.en_zh.zh'source_vocab_name='source.vocab.tsv'target_vocab_name='target.vocab.tsv'vocab_path='./preprocessed'source_vocab=vocab_path+'/'+source_vocab_nametarget_vocab=vocab_path+'/'+target_vocab_namemodel_path='./export_model'ckpt_path='./ckpt1'checkpoint_path=./checkpoints1/trainmin_cnt=2#单词出现次数太少的#Transformer的基础模型使用的数值为:num_layers=6,d_model=512,dff=2048。BUFFER_SIZE=40000BATCH_SIZE=128MAX_LENGTH=100#语料样本长度,大于的则删除num_layers=4d_model=256dff=1024num_heads=8dropout_rate=0.21.创建机器翻译模型训练数据。生成源语言和目标语言的词典:importtensorflow_datasetsastfdsimporttensorflowastfimportosdata_path='/DATA/xxx/project/tf2/en_zh/'#初始化需要词典的数据definit_tfds_data():source_files=[data_path+'data_src/corpus_raw.en-zh.en']target_files=[data_path+'data_src/corpus_raw.en-zh.zh']source_lines_dataset=tf.data.TextLineDataset(source_files)target_lines_dataset=tf.data.TextLineDataset(target_files)lines_dataset=tf.data.Dataset.zip((source_lines_dataset,target_lines_dataset))returnlines_dataset#初始化创建源语言和目标语言的词典definit_tokenizer(lines_dataset):tokenizer_en=tfds.features.text.SubwordTextEncoder.build_from_corpus((en.numpy()foren,zhinlines_dataset),target_vocab_size=32000)tokenizer_en.save_to_file('./tokenizer/tokenizer_en')tokenizer_zh=tfds.features.text.SubwordTextEncoder.build_from_corpus((zh.numpy()foren,zhinlines_dataset),target_vocab_size=32000)tokenizer_zh.save_to_file('./tokenizer/tokenizer_zh')#获取词典defload_tokenizer(vocab_path):ifnotos.path.exists(vocab_path):train_examples=init_tfds_data()init_tokenizer(train_examples)tokenizer_en=tfds.features.text.SubwordTextEncoder.load_from_file(data_path+'tokenizer/tokenizer_en')tokenizer_zh=tfds.features.text.SubwordTextEncoder.load_from_file(data_path+'tokenizer/tokenizer_zh')else:tokenizer_en=tfds.features.text.SubwordTextEncoder.load_from_file(data_path+'tokenizer/tokenizer_en')tokenizer_zh=tfds.features.text.SubwordTextEncoder.load_from_file(data_path+'tokenizer/tokenizer_zh')returntokenizer_en,tokenizer_zh#测试词典结果deftest_tokenizer(tokenizer_en,tokenizer_zh):source_string='Transformerisawesome.'tokenized_string=tokenizer_en.encode(source_string)print(tokenized_string,tokenizer_en.decode(tokenized_string))target_string='例如,其特征在于,形成了高分子修饰层的橢球'target_tokenized_string=tokenizer_zh.encode(target_string)print(target_tokenized_string,tokenizer_zh.decode(target_tokenized_string))print('------'*10)if__name__=='__main__':tokenizer_en,tokenizer_zh=load_tokenizer(data_path+'/tokenizer/tokenizer_en.subwords')test_tokenizer(tokenizer_en,tokenizer_zh)注意:如果数据量过大会内存溢出。本人用1000W数据发生此情况,另外利用jieba分词重新生成了subword的中文的词典。2.模型编写和超参数设置。transformer_model.pyimporttensorflowastfimportnumpyasnp位置编码(Positionalencoding)因为该模型并不包括任何的循环(recurrence)或卷积,所以模型添加了位置编码,为模型提供一些关于单词在句子中相对位置的信息。位置编码向量被加到嵌入(embedding)向量中。嵌入表示一个d维空间的标记,在d维空间中有着相似含义的标记会离彼此更近。但是,嵌入并没有对在一句话中的词的相对位置进行编码。因此,当加上位置编码后,词将基于它们含义的相似度以及它们在句子中的位置,在d维空间中离彼此更近。defget_angles(pos,i,d_model):angle_rates=1/np.power(10000,(2*(i//2))/np.float32(d_model))returnpos*angle_ratesdefpositional_encoding(position,d_model):angle_rads=get_angles(np.arange(position)[:,np.newaxis],np.arange(d_model)[np.newaxis,:],d_model)#applysintoevenindicesinthearray;2iangle_rads[:,0::2]=np.sin(angle_rads[:,0::2])#applycostooddindicesinthearray;2i+1angle_rads[:,1::2]=np.cos(angle_rads[:,1::2])pos_encoding=angle_rads[np.newax
本文标题:蓝灯鱼:Tf2.0基于注意力的神经机器翻译训练发布过程
链接地址:https://www.777doc.com/doc-7725490 .html