图解神秘的NC4HW4 :
https://cloud.tencent.com/developer/article/1748441 ,
根据按行处理特点, 对于Feature和kernel的宽不是4倍数进行处理, 会出现错误. 图中的kernel很明显以已经到了第二行的值。那么有没有方法在按行处理的思想上, 一次处理4个数,而不受影响.答案是有的, 即NC4HW4.即把前4个通道合并在一个通道上, 依次类推, 在通道数不够4的情况下进行补0。
https://www.zhihu.com/question/337513515 ,
自己总结:
NHWC: R1G1B1R2G2B2R3G3B3...R16G16B16
NCHW: R1R2R3...R16G1G2G3...G16B1B2B3...B16,
NC4HW4: R1G1B100000 R2G2B200000 R3G3B300000 补5个零,
实例:
float *dstDat =
[0] 82, [1]84, [2]84, [3]84, [4]85 ... , 这是第一channel,
[262144=512*512]141, [..45]143, [..46]143, [..47]143, [..48]144, [..49]145, 这是第二channel,
[524288=512*512*2]156, [..89]158, [..90]158, [..91]158, [..92]159, [..93]160, [..94]157, [..95]156, [..96]159, 这是第三channel,
用dstDat create一个nchwTensor, 再经copyFromHostTensor拷贝到input Tensor后,最后用一个 float *outDat 读出 input Tensor host内容以便查看,
float *outDat = (即input Tensor host内容)
82, 141, 156, 0, 0, 0, 0, 0, 84, 143, 158, 五个零, 84,143,158, 五个零, 84,143,158, 五个零... ...