1.经常混淆的py切片细节
python 中的 [:-1] 和 [::-1]
a='python' b=a[::-1] print(b) #nohtyp c=a[::-2] print(c) #nhy #从后往前数的话,最后一个位置为-1 d=a[:-1] #从位置0到位置-1之前的数 print(d) #pytho e=a[:-2] #从位置0到位置-2之前的数 print(e) #pyth
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
* ```python
b = a[i:j] # 表示复制a[i]到a[j-1],以生成新的list对象
a = [0,1,2,3,4,5,6,7,8,9]
b = a[1:3] # [1,2]
# 当i缺省时,默认为0,即 a[:3]相当于 a[0:3]
# 当j缺省时,默认为len(alist), 即a[1:]相当于a[1:10]
# 当i,j都缺省时,a[:]就相当于完整复制一份a
b = a[i:j:s] # 表示:i,j与上面的一样,但s表示步进,缺省为1.
# 所以a[i:j:1]相当于a[i:j]
# 当s<0时,i缺省时,默认为-1. j缺省时,默认为-len(a)-1
# 所以a[::-1]相当于 a[-1:-len(a)-1:-1],也就是从最后一个元素到第一个元素复制一遍,即倒序。
2.关于 torch 的pad:full模式(相对于tf中的same模式)
$$
H_{out} = \left\lfloor\frac{H_{in} + 2 \times \text{padding}[0] - \text{dilation}[0]
\times (\text{kernel_size}[0] - 1) - 1}{\text{stride}[0]} + 1\right\rfloor
W_{out} = \left\lfloor\frac{W_{in} + 2 \times \text{padding}[1] - \text{dilation}[1]
\times (\text{kernel_size}[1] - 1) - 1}{\text{stride}[1]} + 1\right\rfloor
$$
相比tensorflow,PyTorch需要用户清楚的知道的自己的卷积核选取对结果的影响。
- 简单一点:先只看 t = kernel【0】// 2;
- Kernel【0】为奇数,那么padding就等于 t;
- 否则,kernel【0】为偶数,那么padding就等于 【t - 1】
3.反卷积
https://blog.csdn.net/g11d111/article/details/82665265
- 反卷积这部分用的少,公式其实就是正卷积中,in 和 out 对调;
- 只不过 反卷积没有了 正卷积 中 的 向下取整 的操作
- 所以在反卷积中, 需要按规矩公式,简单计算一下padding 尺寸参数;
- 最简单就是用局部代码输出看一下结果,看是否符合输入输出尺寸要求
https://blog.csdn.net/m0_37586991/article/details/87855342