【零基础-4】PaddlePaddle学习Bert

概要

【零基础-1】PaddlePaddle学习Bert_ 一只博客-CSDN博客icon-default.png?t=LA92https://blog.csdn.net/qq_42276781/article/details/121488335【零基础-2】PaddlePaddle学习Bert_ 一只博客-CSDN博客icon-default.png?t=LA92https://blog.csdn.net/qq_42276781/article/details/121523268【零基础-3】PaddlePaddle学习Bert_ 一只博客-CSDN博客icon-default.png?t=LA92https://blog.csdn.net/qq_42276781/article/details/121547051

Snippet 4

上回说到为什么要得到batch_sampler的问题。batch_sampler是一个批数据采样器,通过某种限制得到输入数据集的子集,即批数据,原文描述如下

Sampler that restricts data loading to a subset of the dataset.

文档链接如下

batch_sampler — PaddleNLP 文档icon-default.png?t=LA92https://paddlenlp.readthedocs.io/zh/latest/source/paddlenlp.utils.batch_sampler.html?highlight=paddle.io.DistributedBatchSampler但是,对于训练集和非训练集,为什么要采取DistributedBatchSampler和BatchSampler和两种不同的方法呢?就目前查找的资料来看,二者在单机单卡的环境上,似乎并没有什么区别,DistributeBatchSampler可能会提高处理速度?

【零基础-4】PaddlePaddle学习Bert_第1张图片

Snippet 5

return paddle.io.DataLoader(
        dataset=dataset,
        batch_sampler=batch_sampler,
        collate_fn=batchify_fn,
        return_list=True)

DataLoader的API文档我没查到,看了下相关的文档,DataLoader大概就是一个池子,可以从里面取数据。

整体介绍 — PaddleNLP 文档icon-default.png?t=LA92https://paddlenlp.readthedocs.io/zh/latest/data_prepare/overview.html?highlight=DataLoader#id2这里贴一张上面链接里的图,有助于理解Bert的处理流程。

【零基础-4】PaddlePaddle学习Bert_第2张图片

 这里再贴一张有关DataLoader的图。

【零基础-4】PaddlePaddle学习Bert_第3张图片

 链接如下

10分钟完成高精度中文情感分析 — PaddleNLP 文档icon-default.png?t=LA92https://paddlenlp.readthedocs.io/zh/latest/get_started/quick_start.html?highlight=DataLoader#id6

Cell 8

# 样本转换函数
trans_func = partial(
    convert_example,
    tokenizer=tokenizer,
    max_seq_length=MAX_LEN)
batchify_fn = lambda samples, fn=Tuple(
    Pad(axis=0, pad_val=tokenizer.pad_token_id),  # input
    Pad(axis=0, pad_val=tokenizer.pad_token_type_id),  # segment
    Stack(dtype="int64")  # label
    ): [data for data in fn(samples)]
train_data_loader = create_dataloader(
    train_ds,
    mode='train',
    batch_size=BATCH_SIZE,
    batchify_fn=batchify_fn,
    trans_fn=trans_func)
dev_data_loader = create_dataloader(
    dev_ds,
    mode='dev',
    batch_size=BATCH_SIZE,
    batchify_fn=batchify_fn,
    trans_fn=trans_func)
test_data_loader = create_dataloader(
    test_ds,
    mode='test',
    batch_size=BATCH_SIZE,
    batchify_fn=batchify_fn,
    trans_fn=trans_func)

你可能感兴趣的:(深度学习,paddlepaddle,自然语言处理,深度学习,bert,飞浆)