Convolutional neural networks necessitate good algorithms to reduce complexity, and sufficient utilization of parallel processors for acceleration. Within convolutional layers, there are three types of operators: convolution used in forward propagation, deconvolution and dilated-convolution utilized in backward propagation. During the execution of these operators, zeros are typically added to tensors, leading to redundant calculations and unnecessary strain on hardware. To circumvent these inefficiencies, we propose the C-K-S algorithm, accompanied by efficient GPU implementations. C-K-S trims filters to exclude zero-padding. For deconvolution and dilated-convolution, C-K-S transforms sparse tensors into dense tensors, and standardizes the local computational rules to simplify the hardware control. The experimental results demonstrate that C-K-S offers good performance in terms of speed and convergence, surpassing the capabilities of PyTorch and cuDNN in certain scenarios.
翻译:卷积神经网络需要高效的算法来降低计算复杂度,并充分利用并行处理器实现加速。在卷积层中,存在三种类型的算子:前向传播中使用的卷积、反向传播中使用的反卷积和空洞卷积。在执行这些算子时,通常需要向张量添加零值,这会导致冗余计算并对硬件造成不必要的负担。为规避这些低效操作,我们提出了C-K-S算法及其高效的GPU实现方案。C-K-S通过裁剪滤波器以排除零填充操作。针对反卷积与空洞卷积,C-K-S将稀疏张量转换为密集张量,并标准化局部计算规则以简化硬件控制。实验结果表明,C-K-S在运算速度与收敛性方面均表现出优越性能,在某些场景下超越了PyTorch和cuDNN的能力。