每日一博 | 图解神秘的 NC4HW4
【GiantPandaCV导语】以卷积和im2col+gemm实现卷积操作举例,来图解深度学习中Tensor的NC4HW4(其实应该是N{C/4+C%4>0?1:0}HW4),写成NC4HW4方便阅读. 什么是NC4HW4? 对于卷积操作, 根据计算机内存排布特点, 按行进行处理.处理完一个通道的数据, 转入下一个通道继续按行处理. 卷积操作示意图 对于一个nchw格式的Tensor来说, 其在计算机中的内存排布是这样的: NCHW的Tensor内存排布示意图 使用cpp一次指令处理一个数据, 用来处理卷积操作, 即循环实现乘法相加即可. 卷积实现示意图 现在有一条指令处理4组数据的能力, 比如x86结构的sse指令,arm的neon指令.以及GPGPU的OpenGL和OpenCL,单次处理RGBA四组数据. 如果继续使用nchw内存排布的话, 是这样的. 想使用指令集加速卷积,不能直接计算 根据按行处理特点, 对于Feature和kernel的宽不是4倍数进行处理, 会出现错误. 图中的kernel很明显以已经到了第二行的值。那么有没有方法在按行处理的思想上, 一次处理4个数,...

