cuDNN提供了各种各样的API函数,本人在上一篇文章《cuDNN学习笔记(2)-- 常用数据类型和API函数》(https://blog.csdn.net/qq_41736617/article/details/119515655,持续更新中…)进行了介绍。
函数的使用离不开对于原理的理解,本篇对cuDNN的卷积公式进行介绍。
cuDNN提供了好几种计算公式,这里先对计算公式涉及到的变量进行介绍。
卷积公式的参数
Term | Description | 说明 |
---|---|---|
x x x | Input (image) Tensor | 输入的图像或feature map张量 |
w w w | Weight Tensor | 权重张量 |
y y y | Output Tensor | 输出张量 |
n n n | Current Batch Size | 当前Batch的尺寸 |
c c c | Current Input Channel | 输入图像或feature map的通道数,即filter数量 |
C C C | Total Input Channels | 总的输入通道数,应该是用于并行计算使用吧 |
H H H | Input Image Height | 输入图像或feature map的高度 |
W W W | Input Image Width | 输入图像或feature map的宽度 |
k k k | Current Output Channel | 输出图像或feature map的通道数,即filter数量 |
K K K | Total Output Channels | 输出图像或feature map的总通道数 |
p p p | Current Output Height Position | 当前输出图像或feature map高度位置的索引 |
q q q | Current Output Width Position | 当前输出图像或feature map宽度位置的索引 |
G G G | Group Count | 分组数量 |
p a d pad pad | Padding Value | 填充的值 |
u u u | Vertical Subsample Stride (along Height) | 垂直方向欠采步长 |
v v v | Horizontal Subsample Stride (along Width) | 水平方向欠采步长 |
d i l h dil_h dilh | Vertical Dilation (along Height) | 垂直方向膨胀/扩充 |
d i l w dil_w dilw | Horizontal Dilation (along Width) | 水平方向膨胀/扩充 |
r r r | Current Filter Height | 当前Filter索引,这个理解应该是多维张量时通道数在一个方向(Height)的数量 |
R R R | Total Filter Height | 总的Filter高度 |
s s s | Current Filter Width | 当前Filter索引,这个理解应该是多维张量时通道数在另一个方向(Height)的数量 |
S S S | Total Filter Height | 总的Filter宽度 |
C g C_g Cg | C / G C/G C/G | 分组后一个组内的总输入通道数 |
K g K_g Kg | K / G K/G K/G | 分组后一个组内的总输出通道数 |
卷积公式
标准的卷积公式
标准的卷积公式如下:
y n , k , p , q = ∑ c C ∑ r R ∑ s S x n , c , p + r , q + s × w k , c , r , s y_{n,k,p,q}=\sum_{c}^C{\sum_