train_pipeline封装进了data.train.dataset

train_pipeline封装进了data.train.dataset,这种封装是怎么保证按次序进行处理的?

在深度学习框架中,通常是通过一种叫做 "Transformer" 的设计模式来保证数据处理流水线的有序执行。

以 PyTorch 的 torchvision.transforms 模块为例,它就提供了一种 Compose 类,用于将多个数据变换操作串联起来,并按照指定的顺序依次应用。

data 配置字典中, train_pipeline 就是使用类似的方式定义的:

train_pipeline = [
    dict(type='SomePreprocessor1', ...),
    dict(type='SomePreprocessor2', ...),
    dict(type='SomePreprocessor3', ...),
    ...
]

这里的每一个字典元素都代表一个数据预处理操作,它们会被依次应用到输入数据上。

在数据集内部,会使用一个类似于 Compose 的转换器类来管理这个流水线。

这个 Compose 类的实现方式大致如下:
class Compose:
    def __init__(self, transforms):
        self.transforms = transforms

    def __call__(self, data):
        for t in self.transforms:
            data = t(data)
        return data

可以看到,Compose 类接受一个列表形式的数据变换操作列表,在 __call__ 方法中依次调用这些变换操作,并将数据在变换操作之间传递。

这样,我们就可以确保 train_pipelineval_pipeline 和 test_pipeline 中定义的数据处理操作能够按照指定的顺序执行,从而保证整个数据处理流水线的有序性。

这种设计模式广泛应用于各种深度学习框架中,能够有效地管理复杂的数据处理流程。数据集使用者只需要关注如何配置好数据处理流水线,而无需自己实现复杂的流程控制逻辑。

 

https://github.com/kennymckormick/pyskl/blob/main/pyskl/datasets/pipelines/compose.py

https://github.com/kennymckormick/pyskl/blob/main/configs/posec3d/slowonly_r50_ntu60_xsub/limb.py

  • 6
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值