【问题标题】:Sequential batch processing vs parallel batch processing?顺序批处理与并行批处理?
【发布时间】:2021-11-08 17:34:22
【问题描述】:
在基于深度学习的模型训练中,通常会传递一批输入。例如,对于具有 [512] 维输入特征向量的深度学习模型,例如批量大小 = 4,我们主要传递 [4,512] 维输入。我很好奇在跨批次和通道维度 [2048] 展平输入之后传递相同输入的逻辑意义是什么。从逻辑上讲,位置结构将被破坏,但它会显着加快我的实施速度吗?会影响性能吗?
【问题讨论】:
标签:
tensorflow
neural-network
pytorch
conv-neural-network
batch-normalization
【解决方案1】:
在监督学习中,您通常会使用与某种真实值配对的数据点(例如特征向量或多维输入,例如图像)分类任务或其他多维对象)。向您的模型提供包含多个数据点的扁平张量在监督方面没有意义。假设您以这种方式进行推理,那么模型输出级别的监督信号是什么?你会合并标签吗?所有这些似乎都在很大程度上取决于用例:批次的元素之间是否存在某种时间一致性?
在性能方面,这没有任何影响。张量在设计上已经“扁平化”,因为它们的内存布局在连续的内存缓冲区中。多维性的概念是这些库(即 NumPy 的数组和 Torch 的张量)提供的抽象层,以允许更轻松、更灵活地控制数据。