13.11.2 初始化转置卷积层
首先介绍一下双线性插值。现在有一个三维空间,\(z=f(x,y)\),空间中已知(也就是知道\(z\)值)有四个点\(Q_{11}(x_1,y_1)\)、\(Q_{21}(x_2,y_1)\)、\(Q_{12}(x_1,y_2)\)、\(Q_{22}(x_2,y_2)\),现在给定一个点\(P(x,y)\),求\(z_P\)

上面的定义公式,不难推导出来四个已知点的\(z\)值的权重
\[\begin{cases}
w_{11} = (1 - \Delta x)(1 - \Delta y) \\
w_{21} = \Delta x (1 - \Delta y) \\
w_{12} = (1 - \Delta x) \Delta y \\
w_{22} = \Delta x \Delta y \\
\end{cases}
\]
其中:
- $ \Delta x = \frac{x - x_1}{x_2 - x_1} $(水平方向归一化距离)
- $ \Delta y = \frac{y - y_1}{y_2 - y_1} $(垂直方向归一化距离)
权重的物理意义:
- 距离越近,权重越大:
- 若 $ P $ 靠近 $ Q_{11} $,则 $ w_{11} \approx 1 $,其他权重 $ \approx 0 $。
- 若 $ P $ 位于中心,四个权重均为 $ 0.25 $(对3×3核则是 $ [0.25, 0.5, 0.25] $ 的加权组合)。
- 权重总和为1:
$ w_{11} + w_{21} + w_{12} + w_{22} = 1 $,保证插值结果不会超出原始值范围。
现在再来看这段代码:
- 这段代码的整体作用是:给定卷积核的大小,将这个转置卷积核作用于输入的一个像素,输出一个大小为转置卷积核大小的矩阵,其中每一个元素的值都是这个像素乘以一个权重。在这里,我们的目的是找到\((x^{'},y^{'})\)最近的四个像素,并且还要将图片放大两倍,后者要求
stride=2,在后者的要求下满足前者就要求kernel_Size=4 kernel_size是一个整数,表示转置卷积核的大小factor相当于上面所说的\(x_2-x_1\)和\(y_2-y_1\),因为这里把一个像素的中心当做平面上的一个点(而不是一个像素当成一个点)- 判断
kernel_size是否为奇数的原因就是想确定中心点是哪里-1和-0.5是因为点的坐标从0开始计数,而kernel_size本身从1开始计数
og和filt就是在计算上面的权重的

浙公网安备 33010602011771号