深度学习基本概念(1)
1.卷积
原始卷积
- 原始图像大小\(n*n\),卷积核大小\(f*f\),步长(stride)为s,采用padding操作 feature map的大小可用下面公式来描述:
\[\lfloor\frac{n+2p-f}{s}+1\rfloor*\lfloor\frac{n+2p-f}{s}+1\rfloor
\]
- 不使用Padding:
- 经过卷积操作图像会变小
- 边缘和角落只能卷积一次,丢失的信息会很多
- 对于中心点来说则恰恰相反
- Padding
- SAME:意味着p取为\(\frac{f-1}{2}\)
- VALID:意味着p取为0
- 3维卷积
输入图像:\(n\times n \times n_c\),卷积fliter:\(f \times f \times n_c\),特征层:\[(\frac{n+2p-f}{s}+1 )\times (\frac{n+2p-f}{s}+1) \times n_c' \]这里的\(n_c'\)是filter的个数
Note:Tensorflow与Ng的记法不同- SAME:
\[ \lceil \frac{n}{s} \rceil \]- VALID:
\[ \lceil \frac{n-f+1}{s} \rceil \]
depwise_conv:
与原始卷积不同,先分开对图像的每一个维度进行卷积,然后用1*1的卷积进行融合,具体说来:
假设输入卷积层维度为:\((1,D_F,D_F,M)\),用\((D_k,D_k,M,N)\)的filter进行原始卷积操作(步长为1,Padding = SAME),输出为\((1,D_F,D_F,N)\),运算复杂度:\(D_F \times D_F \times N \times D_k \times D_k \times M\).
反之,运用depwise_conv+pointwise_conv组成的depthwise separabale filter,将原始卷积分为两步:
depthwise:\((1,D_F,D_F,M)\)经过\((1,D_K,D_K,M)\),输出特征为\((1,D_F,D_F,M)\),运算复杂度:\((D_F \times D_F \times M \times D_K \times D_K)\)
pointwise:\((1,D_F,D_F,M)\)经过\((1,1,M,N)\),输出为\((1,D_F,D_F,N)\),运算复杂度:\(D_F \times D_F \times N \times M\).
相比较而言,计算量对比为:
\[\frac{D_F \times D_F \times M \times D_K \times D_K+D_F \times D_F \times N \times M}{D_F \times D_F \times N \times D_K \times D_K \times M} = \frac{1}{N}+\frac{1}{D_K^2}
\]