美文网首页Machine Learning & Recommendation & NLP & DL
自然语言处理N天-AllenNLP学习(使用Lazy Data训

自然语言处理N天-AllenNLP学习(使用Lazy Data训

作者: 我的昵称违规了 | 来源:发表于2019-04-01 11:52 被阅读10次
新建 Microsoft PowerPoint 演示文稿 (2).jpg
我又回来了,Pytorch的学习也是为了熟悉AllenNLP结构,所以,在完成基础tutorial之后又折回来继续学AllenNLP。四月份的目标是复现那篇论文中的结构并使用Finetuning完成Transformer。
今天开始AllenNLP入门的第二部分How-to。总共包括七个小节。
  • 如何使用json配置向导
  • How to train a model with lazy data
  • How to train and use a Transformer-based ELMo
  • How to Debug Your AllenNLP Code
  • How to visualize model internals (BETA)
  • Using pre-trained ELMo representations
  • Using span representations

2. 使用Lazy Data训练模型

这里的Lazy Data是相对于实例数据而言,实例数据有时会太大,有时用户只是想每次迭代中使用样例,优势是想立即训练,或是其他原因,这里就可以使用懒数据。
这个教程是用来告诉你,它们(使用懒数据训练模型)都包括了什么。如果需要更加具体的内容,需要看这个Laziness in AllenNLP。我在最后会把这个教程重新拿出来拆分一下看看。

1.1 在 YourDatasetReader 构造函数

YourDatasetReader子类的构造函数中有lazy参数和from_params方法。然后通过数值传入superclass constructor
注意,这里的代码片段是不能直接运行的,仅仅作为解释


def __init__(self,
             tokenizer: Tokenizer = None,
             token_indexers: Dict[str, TokenIndexer] = None,
             lazy: bool = False) -> None:
    super().__init__(lazy)

1.2 在 YourDatasetReader._read()

YourDatasetReader._read()返回的应该是一个generator类型,而不是list
注意,这里的代码片段是不能直接运行的,仅仅作为解释

def _read(self, file_path: str) -> Iterable[Instance]:
    # logic to iterate over file
    # some kind of for loop
    # instance = ...
    yield instance

1.3 在dataset_reader一节中,用户实验配置

用户应该在实验配置的dataset_reader部分中指定'lazy':true。
注意,这里的代码片段是不能直接运行的,仅仅作为解释

  "dataset_reader": {
    "type": "snli",
    "lazy": true,
    "token_indexers": {
      "tokens": {
        "type": "single_id",
        "lowercase_tokens": true
      }
    }
  },

1.4 在iterator 一节中的实验配置

用户应该在实验配置的迭代器部分中尽可能大地指定“max_instances_in_memory”。 (您不必这样做,但这是一个好主意,特别是如果您想使用BucketIterator。)

    def __init__(self,
                 batch_size: int = 32,
                 instances_per_epoch: int = None,
                 max_instances_in_memory: int = None) -> None:
        self._batch_size = batch_size
        self._instances_per_epoch = instances_per_epoch
        self._max_instances_in_memory = max_instances_in_memory

Laziness这部分没有找到源码,在想是不是要自己撸一遍看看。

相关文章

网友评论

    本文标题:自然语言处理N天-AllenNLP学习(使用Lazy Data训

    本文链接:https://www.haomeiwen.com/subject/gwombqtx.html