自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(109)
  • 收藏
  • 关注

原创 conda 与 pip 工具笔记

conda与pip是Python开发中常用的两种工具,conda本质是管理工具,pip是管理工具,两者的功能有一定的重叠。本文主要记录开发工作中与两者相关的使用说明与注意事项。conda info。

2024-04-23 17:30:25 855 1

原创 OPC【4】:从物理包到抽象包

"""类方法unmarshal将进一步处理序列化的包内节点与关系边,位置参数pkg_reader本质是一个封装序列化的包内节点与关系边的集合,package是抽象包,part_factory用于创建Part或其子类的实例——后续会介绍该部分。"""parts = {}本质是迭代序列化包内节点集合,并根据节点的content_type,实例化成Part或者其子类的实例对象。

2024-01-24 16:21:13 746

原创 为CT_P自动注册与CT_Run相关的方法

在docx.oxml.text.paragraph模块中定义了CT_P段落对象元素类,但是CT_P中并未定义add_r等与CT_Run相关的方法。在不断探索源码逻辑的过程中,对这种自动为类注册合适的方法的功能进行了梳理——xmlchemy这个模块设计的真好!!!本文以docx.oxml.text.paragraph.CT_P类创建为例,将重点对MetaOxmlElement元类、_BaseChildElement类的功能进行详细记录。

2024-01-16 14:55:44 871

原创 XMLParser配置

这样在使用XMLParser创建Element节点时,才会创建符合要求的元素节点对象。

2024-01-15 14:34:02 870

原创 创建Dataloader基础篇【一】

因为trainer默认是以aotu_batch方式加载与处理数据,因此本部分仅记录aotu_batch方式。另外本文仅记录trainer中创建dataloader的基础过程。对于一些个性化加载与处理、如长文档文本分类,如有必要,会另起一篇文章再进行记录。

2023-11-28 17:31:08 285

原创 transformers中的data_collator

使用huggingface的Dataset加载数据集,然后使用过tokenizer对文本数据进行编码,但是此时的特征数据还不是tensor,需要转换为深度学习框架所需的tensor类型。data_collator的作用就是将features特征数据转换为tensor类型的dataset。本文记录huggingface transformers中两种比较常用的data_collator,一种是default_data_collator,另一种是DataCollatorWithPadding。本文使用BertT

2023-11-23 17:18:26 589

原创 datasets.Dataset.map方法学习笔记

可以将datasets中的Dataset实例看做是一张数据表。map方法会将输入的function按照指定的方式应用在每一行(每一行称为一个example)上。是map方法的核心,其介绍单独放在下列章节。

2023-11-23 14:45:58 1362

原创 OPC【2】:关系边

opc中的Relationships概念详解。

2023-08-15 15:21:30 555

原创 OPC【1】:重要概念

opc重要概念

2023-08-15 11:03:02 199

原创 《LORA: LOW-RANK ADAPTATION OF LARGE LANGUAGE MODELS》论文笔记

这个思想与ALBERT中分解Embedding层的思想非常相似,只是LORA的作用范围主要应用在LLM中的注意力层。的秩值相同,则相当于Fine-tuning同等规模的模型参数,因此参数。注意在LORA中有两个重要的超参数,第一个是秩超参数。因此基于假设,作者提出将变量。缩放,控制新引入权重对预训练权重的影响程度。可以引入一个新的模型权重变量。,将毫无意义,因为在LLM中,变量。是预训练模型参数,如何在保持。不变的条件下,改变输出变量。的秩(RANK)远小于变量。分解为两个低维度的变量。

2023-07-07 15:45:50 662

原创 文本处理:字符串替换

该方法逻辑大致如下所示,存在多个old与new映射对时,需要串联使用多个replace方法, 效率较低。

2023-02-17 16:48:39 1083 1

原创 OPC【6】:docx读写文档属性信息

propertyCorePropertiesPart类的core_prepeties特性,返回的是CoreProperties代理类——定义于docx.opc.coreprops,该代理类初始化时传入的self.element是CT_CoreProperties实例——定义于docx.oxml.coreprops。CorePropertiesPart 类继承 docx.opc.part.XmlPart, docx.opc.part.XmlPart 继承 ocx.opc.part.Part。

2023-01-19 17:16:16 1101

原创 OPC【5】:从抽象包到物理包

打包(marshal)将抽象包信息写入到一个遵循zip规范的物理格式文件,如docx格式文件。打包相对解包过程而言,就简单很多了。

2023-01-19 09:59:04 1847

原创 OPC【3】:包内节点

OPC中part节点的概念。

2023-01-18 11:31:54 618

原创 Python 多进程编程《*》:shared_memory 模块

目的是为了多进程编程提供共享内存功能,该模块主要包含两个类 SharedMemory 与 SharebleList, 后者在前者的基础之上进一步进行了封装。同时为了管理共享内存,在multiprocessing.managers定义了SharedMemoryManager, 进一步封装SharedMemory 与 SharebleList。...

2022-08-29 10:50:55 2864

原创 Python 多进程编程《*》: 共享内存 shared ctypes objects & sharedctypes 模块

在操作系统中,进程是相互隔离的,如果进程之间需要交流数据,可以通过“文件、数据库、socket套接字通信”等方式来交流数据,另外还有“共享内存”的方式,这种方式的优势是效率更高,同时需要注意“进程同步问题,避免多进程对共享内存的操作造成脏数据,可采用类似线程同步的锁机制来解决”。...

2022-08-26 15:25:02 980

原创 Python 多进程编程《一》: 创建进程的三种模式

进程是操作系统分配资源的最小单位,进程之间是相互隔离的,一般一个应用程序就对应一个进程。进程中可以包含多个线程,同一进程内的多线程可以共享进程内的部分资源。由于进程之间有隔离机制,因此在并发编程中,进程之间更加注重通信(或者说资源共享),而多线程编程更加注重线程同步(协同执行)。Python中有 spawn、fork、forkserver 三种创建子进程的模式,创建子进程的模式与操作系统密切相关,不同模式下创建的子进程,所具有的共享资源有所差异。...

2022-08-17 14:28:25 1801

原创 Windows下后台运行Python程序,并终止特定程序

将上述命令写入一个“run.vbs”文件,vbs文件遵循Windows脚本语言规范,详细语法没有查阅。其中第一行表示创建一个shell对象, 第二行调用shell对象的run方法,执行批处理文件start.bat,默认从“run.vbs”同级目录下查找指定的批处理文件,如果没有找到,就沿着环境变量中指定的路径查找,也可以直接指定绝对路径。最后的参数vbhide表示隐藏执行命令的窗口。......

2022-08-15 11:24:49 3937

原创 Windows|Linux 环境下安装JDK11.0

JDK(JAVA Development Kits) 可以理解为集成开发环境,JDK-11及以上版本一般会包含JRE(JAVE Runtime Environment), JRE可以看着是Python语言类似的对象,JVM是用以编译JAVA对象的,JAR可以看作是JAVA脚本文件,类似于Python脚本文件。...

2022-08-12 17:09:56 953

原创 Python多线程编程《四》:ThreadPoolExecutor 与 Future

标准库concurrent.futures对多线程编程中的线程池与期物进行了高阶封装,并且在多线程、多进程编程中,futures提供了高度一致的接口,因此学习ThreadPoolExecutor与Future不仅对Python多线程编程有很大的帮助,对Python多进程编程也有帮助。...

2022-07-15 16:55:27 1918 1

原创 《Do Transformers Really Perform Bad for Graph Representation?》论文笔记

论文提出 Graphormer 对“图数据结构”进行表征学习,Graphormer 是基于标准 Transformer 模型结构, 通过加入 Centrality Encoding、Spatial Encoding 、Edge Encoding 技术编码图结构信息, Centrality Encoding 主要用于编码节点的重要度信息, Spatial Encoding 主要用于编码节点位置结构信息。模型示意图如下: 给定一个图对象 G=(V,E)G=(V, E)G=(V,E), V={v1,v2,..

2022-06-07 17:23:09 305

原创 《ChineseBERT: Chinese Pretraining Enhanced by Glyph and Pinyin Information》论文笔记

ChineseBERT 与 BERT 非常相似,只是在 Embedding 层上,前者对每个输入单元还添加了“字形”、“拼音”信息。由于中文是象形文字,因此字形中也包含了一定的语音信息,而加入拼音信息主要是为了解决一字多音——不同的发音包含不同的语义信息, 模型整体结构如下所示:每个token的 Char embedding、Glyph embedding、 Pinyin embedding 会先进行 concatenate操作,然后经过全连接映射,最后与 Position embedding相加输入到

2022-06-06 16:31:45 299

原创 《ELECTRA: PRE-TRAINING TEXT ENCODERS AS DISCRIMINATORS RATHER THAN GENERATORS》论文笔记

ELECTRA 提出“替换词检测” 预训练任务,在计算损失时,考虑全部输入, 而非 MLM 中15%的输入;另一方面解决了[MASK] 在预训练与Fine-Tuning 阶段不一致的问题。 替换词检测替换词检测任务采用如下结构:生成器理论上可以采用任何模型,论文中采用的是Transformer Encoder,并进行 MLM 任务。MLM 任务会给出一个新的输入序列,这个新的输入序列会作为判别器的输入, 判别器的任务是检查新输入中的词是否是替换词,即对每一个词进行二分类。最终预训练的损失

2022-05-16 15:11:58 346

原创 《UNILMv2: Pseudo-Masked Language Models for Unified Language Model Pre-Training》论文笔记

UniLMsUniLMs由《Unified Language Model Pre-training for Natural Language Understanding and Generation》(2019)提出,其核心是通过不同的注意力机制,在同一模型下进行Unidirectional Language Model, Bidirectional Language Model, 与 Sequence to Sequence Language Model三种任务。Bidirectional LM:

2022-05-16 11:09:53 578

原创 《BART: Denoising Sequence-to-Sequence Pre-training》论文笔记

模型结构BART采用一种去噪自编码方法进行预训练,不同于BERT仅使用Transformer Encoder结构,BART使用Encoder-Decoder结构。Encoder类似BERT采用双向注意力,Decoder类似GPT采用Left2Right注意力。由于采用Seq2Seq结构,Encoder部分可以采用任意的“加噪声方法”, 注意一种极端的加噪声方式,就是完全遮盖掉Encoder的输入,此时就相当于GPT。模型结构如下图所示:在BART Base中,Encoder 与 Decoder 各为

2022-04-29 17:11:19 1477

原创 《Improving Language Understanding by Generative Pre-Training》论文笔记

引言GPT(Generative Pre-Training) 受到 《Semi-Supervised Sequence Learning》与《Universal Language Model Fine-tuning for Text Classification》的启发,采用“预训练 + Fine-tune” 两阶段的方式,在不降低模型效果的基础上,以统一的模型结构处理不同的NLP任务,并有效地降低有监督学习对标注数据的依赖。 预训练阶段GPT 采用 Transformer Decoder

2022-04-29 14:03:27 541

原创 Python GIL 学习笔记

什么是GIL在CPython中,线程执行之前,必须先获取全局解释锁。在某一特定时刻,由于全局解锁锁是唯一的——每一进程有自己独立的GIL,因此仅有一个线程对象持有全局解释锁,这种机制保证了数据修改操作的安全性。注意GIL保护的是Python 解释器的状态,比如对象的引用计数信息,如果确保用户数据对象的原子性操作,需要对用户对象进行加锁操作;GIL是一种字节码级别的互斥锁。 操作系统、cpu、进程、线程及其关系【转载参考资料2】基础概念操作系统: 从操作系统与CPU之间的关系上,操作系

2022-04-26 10:48:55 266 1

原创 Python 迭代协议

Python 迭代协议由__iter__方法与__next__方法构成,若对象具有__iter__方法,称该对象为“可迭代对象(iterable object)”。若对象具有__next__方法,称该对象为“迭代器(iterator)”。__iter__方法必须返回一个迭代器对象,__next__方法不断的返回下一元素,或者抛出StopIteration。__next__方法是 Python 迭代协议的核心,__iter__方法是迭代协议的辅助——将可迭代对象转换成迭代器。在大多数情况下,可迭代对象会自动

2022-04-21 14:00:59 884

原创 《Not Enough Data? Deep Learning to the Rescue》论文笔记

引言文本数据增强技术在小样本分类任务上,有助于模型效果的提升。已有的数据增强技术如EDA、Conditional BERT采用的是局部替换的方式,在预训练语言模型效果显著提升的背景下,作者试图采用GPT2,以文本生成的方式合成新样本,而非局部替换的方式,探索提升模型效果的方法。 LAMBADALAMBADA(Language Model Based Data Augmentation)是一种基于语言模型的数据增强方法,具体详情如下:输入部分需要“训练数据集合,分类算法、预训练语言模型、

2022-04-19 14:43:40 308

原创 《EDA: Easy Data Augmentation Techniques for Boosting Performance on Text Classification Tasks》论文笔记

EDA作者提出四种简洁有效的文本数据增强方法,可以提升分类任务的效果,称为EDA(Easy Data Augmentation),四种方法如下:同义词替换(Synonym Replacement):从输入中随机选择 N 个非停用词,对选中的词,从它们的同义词中随即选择一个替换原词。随机插入(Random Insertation):随机选择一个非停用词,然后随机选择该非停用词的一个同义词,将该同义词随机插入输入序列的任意位置上,重复 N 次。随机调换(Random Swap):随机选择输入序列中的一

2022-04-15 11:43:30 316

原创 Numpy(高维数组) |Pytorch(张量) 索引读操作笔记

张量是一种多维单一数据类型数组,pytorch 索引张量继承 numpy 索引多维数组。两者均遵守 x[obj] 索引语法,obj 称为索引对象。根据 obj 的不同情形,有“基础索引”, “高级索引”, “字段访问(field access)”三种形式, 本文主要记录前两者。 基础索引当索引对象是元组时,遵守基础索引规则, 注意x1, x2, x3 是元组 (x1, x2, x3)的等价形式。当只需索引单一元素时,类似于标准 python 序列对象索引操作,索引号从0开始, 支持负数。当

2022-04-13 16:29:45 2453

原创 《Conditional BERT Contextual Augmentation》论文笔记

Conditional BERT Contextual Augmentation直观来看,MLM 是一种非常好的“基于上下文”的数据增强方式(后面的实验结果也证明,直接使用Bert也可以取得较好的效果。), 但是在分类任务中,人工合成的数据不应丧失“标签信息”。比如原文“The movie is good.”,good 一词被 Mask, 而预测为 bad, 则改变了标签的信息。因此在预测替换词时,不仅需要考虑上下文信息,还应该考虑标签信息, 据此本文提出了Conditional Bert。 

2022-04-12 14:53:46 1568

原创 《PERT: Pre-Training Bert With Pemuted Language Model》论文笔记

简介作者提出,预训练模型大致可以分为两大类,自编码(AutoEncoder) 与自回归(AutoRegressive),自编码的典型代表是BERT, 自回归的典型代表是GPT。Bert预训练阶段采用 MLM + NSP 预训练任务,在NLU中取得了非常好的成绩。为了提升预训练模型的能力,作者试图探索不同的预训练方法,即提出本文的“乱序语言模型”(Permuted Language Model)。实际上还有一大类预训练模型,这类模型试图结合“自编码 + 自回归”两者的优势,代表有XLNet, UniLMs

2022-04-12 10:17:03 711

原创 《Focal Loss & GHM Loss & Dice Los》论文笔记

Focal Loss在二分类问题中,交叉熵损失定义如下:yyy 表示真实值,取值0与1,ppp表示模型预测正类的概率,取值0到1。为了表述方便,将上述公式重新表述为:对于类别不平衡问题,我们可以为每个类别加不同的权重,使得每个类别对总损失的贡献程度有差异,如下所示,αt\alpha_tαt​ 表示每个类的权重值,一般可取值“类样本数的逆频数”。与类加权的思想非常相似,Focal Loss 在交叉熵损失的基础之上,添加了一个权重调节项(1−p)γ(1 - p )^\gamma(1−p)γ。如下

2022-04-11 15:18:05 4255

原创 【Pytorch】交叉熵损失学习笔记

记录交叉熵及pytorch中的交叉熵实现的学习过程。

2022-04-11 10:41:18 1183

原创 《Improving BERT-Based Text Classification With Auxiliary Sentence and Domain Knowledge》论文笔记

模型模型部分与Bert论文完全一致,只是为分类任务的输入样本构建了“辅助序列”——这种方法只适用于“单序列分类”,对于“语句相似性”等句对分类任务不适用。上图输入部分的 aia_iai​ 表示的是人工构建的辅助序列的token。作者提出三种构建“辅助序列”的策略,1)辅助序列是一个不包含标签信息的问句, 用BERT4TC-AQ标识;2)辅助序列是只包含一个标签名称的文本描述,用BERT4TC-AA标识;3)辅助序列是一个仅包含一个标签名称与若干其它词的文本描述, 用BERT4TC-AWA标识。作者

2022-04-02 16:26:32 960

原创 《How to Fine-Tune BERT for Text Classification》论文笔记

方法论作者提出三种FineTune Bert的方法:1)直接使用下游目标数据集进行FineTune;2)先在目标领域上进一步Pretraining Bert, 再利用目标数据集FineTune; 3)与方法2类似,但加入了Multi-Task FineTune。 进一步预训练已有很多研究表明,在目标领域进一步预训练预训练模型,能提升预训练模型在下游任务的表现,依据进一步预训练的数据集,可分为三类:1)预训练时,仅能使用下游目标标注数据集;2)预训练时,可以使用目标任务所在领域的大量数据,

2022-04-01 15:36:52 1451

原创 《Multi-Task Deep Neural Networks for Natural Language Understanding》论文笔记

摘要作者提出MT_DNN迁移学习方法,该方法试图结合 Multi-Task Learning 与 Pretraining LM 的优点。MT_DNN的示意图如下:MTL是指“同一模型同时在多个相关数据集上,进行多任务的学习”,这样的好处不仅可使模型利用更多的数据集,也具有正则效果。而加入预训练模型的优势,则是将预训练模型作为Encoder, 这个Encoder处于网络结构的底层,被多个任务所共享,而每个特定的任务具有特定的学习层则处于上层。 模型结构Encoder部分就是Bert,可参

2022-04-01 14:36:49 164

原创 《Universal Language Model Fine-tuning for Text Classification》论文笔记

摘要基于Pretrain-Finetune与语言模型的优点,作者提出 ULMFiT 迁移学习方法,降低深度学习模型对标注数据集的依赖, 以及提升模型表现。 ULMFiT 包含三个主要步骤, 第一,在大规模通用数据集上训练语言模型, 第二,将预训练模型在目标领域数据集上进行FineTune,使预训练模型学习目标数据集的特征,最后在目标数据集合上FineTune 目标分类器。 相关研究Multi-Task Learning多任务学习是指“使同一模型同时进行多个任务, 同时进行的任务可以在同一

2022-03-31 16:56:00 1383

原创 【pytorch】Dataloader学习笔记

总结Pytorch中加载数据集的核心类为torch.utils.data.Dataloder,Dataloader中最核心的参数为dataset,表示需加载的源数据集。dataset有两种类型:“map-style dataset” 与 “iterable-style dataset”, map-style dataset可以理解为“每一样本值都可以通过一个索引键获取”, iterable-style dataset可以理解为“每一条样本值顺序存储在容器中,没有索引键”。参数sampler 与参数shuf

2021-12-02 11:27:24 3715

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除