首页 > 其他分享 >8. PyTorch生态简介

8. PyTorch生态简介

时间:2022-08-28 16:33:11浏览次数:47  
标签:简介 torchtext PyTorch train examples text test data 生态

  由于本人未接触过也并未打算从事图像相关工作,所以只介绍了torchtext生态。有关torchvision和PytorchViseo只是了解了一下并未进行笔记输出。


torchtext简介

  torchtext主要是用于自然语言处理(NLP)的工具包,主要包含四个部分:

  • 数据处理工具 torchtext.data.functional、torchtext.data.utils

  • 数据集 torchtext.data.datasets

  • 词表工具 torchtext.vocab

  • 评测指标 torchtext.metrics

 


  • 构建数据集

  Field是torchtext中定义数据类型以及转换为张量的指令。

  torchtext 认为一个样本是由多个字段(文本字段,标签字段)组成,不同的字段可能会有不同的处理方式,所以才会有 Field 抽象。

# 首先构建Field
tokenize = lambda x: x.split()
TEXT = data.Field(sequential=True, tokenize=tokenize, lower=True, fix_length=200)
LABEL = data.Field(sequential=False, use_vocab=False)

  其中:

​   sequential设置数据是否是顺序表示的;

​   tokenize用于设置将字符串标记为顺序实例的函数

​   lower设置是否将字符串全部转为小写;

  ​ fix_length设置此字段所有实例都将填充到一个固定的长度,方便后续处理;

​   use_vocab设置是否引入Vocab object,如果为False,则需要保证之后输入field中的data都是numerical的

 

# 然后开始构建dataset
from torchtext import data
def get_dataset(csv_data, text_field, label_field, test=False):
    fields = [("id", None), # we won't be needing the id, so we pass in None as the field
                 ("comment_text", text_field), ("toxic", label_field)]       
    examples = []

    if test:
        # 如果为测试集,则不加载label
        for text in tqdm(csv_data['comment_text']):
            examples.append(data.Example.fromlist([None, text, None], fields))
    else:
        for text, label in tqdm(zip(csv_data['comment_text'], csv_data['toxic'])):
            examples.append(data.Example.fromlist([None, text, label], fields))
    return examples, fields
# 使用数据csv_data中有"comment_text"和"toxic"两列,分别对应text和label。
train_data = pd.read_csv('train_toxic_comments.csv')
valid_data = pd.read_csv('valid_toxic_comments.csv')
test_data = pd.read_csv("test_toxic_comments.csv")
TEXT = data.Field(sequential=True, tokenize=tokenize, lower=True)
LABEL = data.Field(sequential=False, use_vocab=False)

# 得到构建Dataset所需的examples和fields
train_examples, train_fields = get_dataset(train_data, TEXT, LABEL)
valid_examples, valid_fields = get_dataset(valid_data, TEXT, LABEL)
test_examples, test_fields = get_dataset(test_data, TEXT, None, test=True)
# 构建Dataset数据集
train = data.Dataset(train_examples, train_fields)
valid = data.Dataset(valid_examples, valid_fields)
test = data.Dataset(test_examples, test_fields)

  定义Field对象完成后,通过get_dataset函数可以读入数据的文本和标签,将二者(examples)连同field一起送到torchtext.data.Dataset类中,即可完成数据集的构建。

# 查看读入的数据情况:
# 检查keys是否正确
print(train[0].__dict__.keys())
print(test[0].__dict__.keys())
# 抽查内容是否正确
print(train[0].comment_text)
  • 词汇表(vocab)

  将字符串形式的词语(word)转变为数字形式的向量表示(embedding)被称为Word Embedding。

  在torchtext中可以使用Field自带的build_vocab函数完成词汇表构建。

TEXT.build_vocab(train)
  • 数据迭代器

from torchtext.data import Iterator, BucketIterator
# 若只针对训练集构造迭代器
# train_iter = data.BucketIterator(dataset=train, batch_size=8, shuffle=True, sort_within_batch=False, repeat=False)

# 同时对训练集和验证集进行迭代器的构建
train_iter, val_iter = BucketIterator.splits(
        (train, valid), # 构建数据集所需的数据集
        batch_sizes=(8, 8),
        device=-1, # 如果使用gpu,此处将-1更换为GPU的编号
        sort_key=lambda x: len(x.comment_text), # the BucketIterator needs to be told what function it should use to group the data.
        sort_within_batch=False
)

test_iter = Iterator(test, batch_size=8, device=-1, sort=False, sort_within_batch=False)

  注:torchtext支持只对一个dataset和同时对多个dataset构建数据迭代器。

  • 评测指标(metric)

  常用BLEU (bilingual evaluation understudy) score来评价预测文本和标签文本之间的相似程度。

from torchtext.data.metrics import bleu_score
candidate_corpus = [['My', 'full', 'pytorch', 'test'], ['Another', 'Sentence']]
references_corpus = [[['My', 'full', 'pytorch', 'test'], ['Completely', 'Different']], [['No', 'Match']]]
bleu_score(candidate_corpus, references_corpus)

输出:
0.8408964276313782

 

标签:简介,torchtext,PyTorch,train,examples,text,test,data,生态
From: https://www.cnblogs.com/5466a/p/16633003.html

相关文章

  • PyTorch Geometric(pyg)学习
    参考2个链接: 第十六课.Pytorch-geometric入门(一)_tzc_fly的博客-CSDN博客_pytorch-geometric 第十七课.Pytorch-geometric入门(二)_tzc_fly的博客-CSDN博客......
  • pytorch转为mindspore模型
    MindConverter将PyTorch(ONNX)模型快速迁移到MindSpore框架下使用。第一步:pytorch模型转onnx:importtorch#根据实际情况替换以下类路径fromcustomized.path.to.py......
  • TensorFlow和CUDA、cudnn、Pytorch以及英伟达显卡对应版本对照表
    TensorFlow和CUDA、cudnn、Pytorch以及英伟达显卡对应版本对照表CUDA下载地址CUDNN下载地址torch下载英伟达显卡下载一、TensorFlow对应版本对照表版本Python版......
  • TensorFlow和CUDA、cudnn以及Pytorch对应版本对照表
    TensorFlow和CUDA、cudnn以及Pytorch对应版本对照表CUDA下载地址CUDNN下载地址torch下载一、TensorFlow对应版本对照表版本Python版本编译器cuDNNCUDAte......
  • innodb buffer pool简介
    一、InnodbBufferPool简介BufferPool是Innodb内存中的的一块占比较大的区域,用来缓存表和索引数据。众所周知,从内存访问会比从磁盘访问快很多。为了提高数据的读取速......
  • Linux学习笔记1——Linux简介、版本、安装
    Linux学习笔记1——Linux简介、版本、安装1、Linux简介:一种开源的,免费的操作系统,安装在计算机硬件上,用来管理计算机的硬件和软件资源的系统软件。Linux注重安全性,稳定性......
  • Pytorch中获取模型摘要的3种方法
    在pytorch中获取模型的可训练和不可训练的参数,层名称,内核大小和数量。Pytorchnn.Module类中没有提供像与Keras那样的可以计算模型中可训练和不可训练的参数的数量并显示......
  • java简介
    java简介1特点1.1俩个基本概念类对象1.2三大特性封装继承多态2java开发工具2.1JDKJREJVMJDK:Java开发工具包JRE:Java运行环境JVM:Java虚拟......
  • 乘风破浪,遇见最佳跨平台跨终端框架.Net Core/.Net生态 - 超前预编译AOT和即时编译JIT
    什么是即时编译JIT在计算机领域,即时编译(JustInTime,JIT)(也是动态编译或运行时编译)是一种执行计算机代码的方式,它涉及在程序执行期间(运行时)而不是在执行之前进行编......
  • jmeter -工具简介
     1.多线程框架--支持多并发操作启动一个jmeter就是一个进程(就是一个java进程),可以创建很多用户数 对于服务器模拟负载1个线程等于一个用户数 开源,可以进行二......