一个有助于分析神经模型隐藏激活的广泛工具的库。
diagNNose的Python项目详细描述
诊断·
这个库包含一组模块,可以用来分析神经网络的激活,重点是NLP架构,如LSTMs和Transformers。 特别是,它包含以下功能:
- 从不同类型(语言)模型提取激活,并提供对这些存储激活的快速访问。在
- 训练诊断分类器(Hupkes et al., 2018)关于提取的激活。在
- 训练控制任务(Hewitt & Liang, 2019)与这些诊断分类器并行。在
- 在模型上执行model-agnosicfeature attributions(Murdoch et al., 2018)。在
- 在语言模型上运行一个广泛的targeted syntactic evaluations语言套件。在
:tada:diagNNose
已在BlackboxNLP 2020呈现!这张纸可以找到here。在
文档可在diagnnose.readthedocs.io找到。在
我们的库是在pip上正式注册的,可以通过运行pip install diagnnose
进行安装。
Python的首选版本是≥3.6。所需的包在^{
快速游览
diagNNose
的工作流程被分为几个构建块,可以组合起来进行各种实验。在
我们提供了几个示例来演示这个库。 {a1}还为这些脚本提供了一个交互式窗体
活化提取
模型的激活可以使用一个Extractor
来提取,它负责批处理和选择感兴趣的激活。在
细粒度的激活选择可以通过定义selection_func
,它基于当前句子索引和语料库项来选择激活。在
fromtorchtext.dataimportExamplefromdiagnnose.configimportcreate_config_dictfromdiagnnose.corpusimportCorpusfromdiagnnose.extractimportExtractorfromdiagnnose.modelsimportLanguageModel,import_modelfromdiagnnose.tokenizer.createimportcreate_tokenizerif__name__=="__main__":config_dict=create_config_dict()tokenizer=create_tokenizer(**config_dict["tokenizer"])corpus:Corpus=Corpus.create(tokenizer=tokenizer,**config_dict["corpus"])model:LanguageModel=import_model(**config_dict["model"])defselection_func(w_idx:int,item:Example)->bool:returnw_idx==item.extraction_idxextractor=Extractor(model,corpus,selection_func=selection_func,**config_dict["extract"])activation_reader=extractor.extract()
使用diagNNose
进行研究
- Jumelet,Zuidema&Hupkes(2019年):Analysing Neural Language Models: Contextual Decomposition Reveals Default Reasoning in Number and Gender Assignment
引用
如果您打算使用diagNNose
进行研究,请引用如下。请随时伸出援手,我们很乐意帮助您!在
- 项目
标签: