前几天看到一个群里有人问,AllenNLP在控制台使用命令train时,什么时候建立的词典,于是今天浏览了一下AllenNLP的代码。
train.pyclass Train(Subcommand):类里,这里用parser定义了一些命令行的输入指令。在控制台输入allennlp train XXX -s XXX之后,读取配置文件.json,然后进入到

train_model(params, serialization_dir, file_friendly_logging, recover, force)

这个方法里,帮你进行了初始化的工作,比如说

prepare_environment(params) #设置seed
create_serialization_dir(params, serialization_dir, recover, force)   #创建输出的目录
check_for_gpu(cuda_device)  #检查GPU

这些零碎的工作完成之后,进入到

TrainerPieces.from_params(params, serialization_dir, recover)

在这个方法里,就可以看到

training_util.datasets_from_params(params)  #在这里读取数据集

读取完数据集后,创建词典,如果命令行中加了-r就会使用之前已经创建好的词典。在json配置文件里如果没有定义词典的属性的话,使用默认的参数。

if recover and os.path.exists(os.path.join(serialization_dir, "vocabulary")):vocab = Vocabulary.from_files(os.path.join(serialization_dir, "vocabulary"))
else:vocab = Vocabulary.from_params(params.pop("vocabulary", {}),(instance for key, dataset in all_datasets.items()for instance in datasetif key in datasets_for_vocab_creation))   #这里用读取的数据建立词典

保存词典到文件。

vocab.save_to_files(os.path.join(serialization_dir, "vocabulary"))

总结

AllenNLP的工程搭建应该可以有三种方式:

  1. 所有的代码都自己完成,比如vocabulary,BucketIterator,trainer。但是想要改参数的话,不够方便。
  2. 手动调用from_params(),对所有东西设置属性。
  3. 只用写json配置文件,自己的模型,数据集的读取等类,其他工作由AllenNLP的代码辅助完成。这样就可以节省时间,专注于模型和数据的读取。

但是

手写json配置文件是一件困难的事情,可以有两种方法辅助完成。

  1. 参考AllenNLP已经完成的配置文件,在training_config中。
  2. 命令行中用allennlp configure --port 8123,打开网页,在界面上设置。这个在windows中不能使用,只能在ubuntu中用。

AllenNLP训练的方式相关推荐

  1. 通过自然训练的方式提升眼睛视力

    从来没有人问过视力不好是否可以自然矫正的问题. 对于我们这些视力不佳的人,一旦我们看到视力模糊的迹象,我们就会自动进行验光配镜. 一旦我们采取了这一行动,不知不觉中,我们就走进了一张网,在那里我们将被 ...

  2. pytorch 26 科学炼丹(训练)方式之——魔改网络(给模型做外科手术,实现module的删除、修改与添加,forward流程的修改)

    网络结构层出不穷,但经典网络总是大家工程上的最爱.有的时候需要对网络进行微操,直接该源码一是工作量太大:二是破坏了原来的网络结构会导致预训练权重无法加载.因此,可以在加载预训练权重后对模型进行微操. ...

  3. TensorFlow入门教程(十五):验证码识别之多任务方式进行训练

    1.  验证码识别的方法 比如有一个验证码标签为 0782,可以拆成4个Label. Label0:1000000000, Label1:0000000100, Label2:1000000010,  ...

  4. allenNLP入门记录

    稍微记录(翻译)一下guide:https://guide.allennlp.org/ 目录 PART 1: QUICK START Your first model 1 What is text c ...

  5. 【PTM】ELMo:通过预训练语言模型生成词向量

    今天学习的是 AllenNLP 和华盛顿大学 2018 年的论文<Deep contextualized word representations>,是 NAACL 2018 best p ...

  6. Pytorch中多GPU训练指北

    前言 在数据越来越多的时代,随着模型规模参数的增多,以及数据量的不断提升,使用多GPU去训练是不可避免的事情.Pytorch在0.4.0及以后的版本中已经提供了多GPU训练的方式,本文简单讲解下使用P ...

  7. 多机多卡训练基本原理

    多机多卡训练基本原理 在工业实践中,许多较复杂的任务需要使用更强大的模型.强大模型加上海量的训练数据,经常导致模型训练耗时严重.比如在计算机视觉分类任务中,训练一个在ImageNet数据集上精度表现良 ...

  8. 半小时训练亿级规模知识图谱,亚马逊AI开源知识图谱嵌入表示框架DGL-KE

    出品 | AI科技大本营(ID:rgznai100) 知识图谱 (Knowledge Graph)作为一个重要的技术,在近几年里被广泛运用在了信息检索,自然语言处理,以及推荐系统等各种领域.学习知识图 ...

  9. 模型也可以上网课?!一文看懂服务型蒸馏训练方案

    允中 发自 凹非寺 量子位 编辑 | 公众号 QbitAI 自今年年初,由于疫情的原因,为了减少人员聚集,降低病毒扩散的可能性,各大中小学校都陆续开始了网上教学.上网课已经成了家喻户晓的一种学习方式了 ...

最新文章

  1. 大数据WEB阶段 shiro安全控制框架
  2. u2020 华为_华为MateBook X Pro 2020款评测:全面屏商务旗舰再升级
  3. python canny优化_python实现canny边缘检测
  4. 如何使用多个端口访问tomcat
  5. java mockserver搭建_mockjs,json-server一起搭建前端通用的数据模拟框架教程
  6. PostgreSQL的登录、创建用户、数据库并赋权
  7. vc通过编译指令传参_iOS开发你不知道的事编译amp;链接
  8. Oracle数据库管理之创建和删除数据库
  9. 明解c语言第7章答案,明解C语言 入门篇 第六章答案
  10. c++11 日期和时间工具-(std::chrono::steady_clock)(std::chrono::high_resolution_clock)
  11. 怎样批量修改图片像素大小?
  12. 教你如何在word中像LaTex那样打公式
  13. snappy流式编解码总结
  14. 《人工智能算法工程师(初级)》
  15. 系统安全之利用操作系统自带命令杀毒
  16. 喵帕斯之矩阵 SDUT
  17. oracle简单序列,oracle序列生成器(sequence)使用的一点小注意
  18. Arcgis计算坡度问题
  19. Linux(kali)永恒之蓝(ms17-010)漏洞实验
  20. Mac 破解Adobe Photoshop CS6

热门文章

  1. c55x 汇编语言指令,实验1 C55x汇编语言编程(2012328).doc
  2. Android系统签名jks文件
  3. 项目中前端ftl模板了解
  4. Unixbench——2D图形性能测试方法及工具下载
  5. TensorFlow - 特征值与特征向量(Eigenvalues and eigenvectors)
  6. Linux的内网渗透入门教程:第一节 通过arp欺骗进行网关劫持,截获别人手机的图片(VMware环境)
  7. 字节跳动面试官:java范例完全自学手册
  8. mysql可重复读有什么好处_mysql可重复读现象及原理分析
  9. spark-streaming任务提交遇到的坑
  10. series 锐捷rgrsr20_锐捷rg-rsr20路由器模版